この質問は、直接this oneに関係しています。しかし、私はそれを根本的な問題に分解しようとしましたが、もう1つの質問ボックスにさらに多くのテキストを入力したくありませんでした。したがって、ここに行く:クラスメソッドを追加する方法
モジュールClassMethodsを拡張し、Module#includeフックを介してクラスメソッドを含めることで、classmethodsを含めることができます。しかし、前置詞で同じことをすることはできますか?ここに私の例である:
Fooクラス:
class Foo
def self.bar
'Base Bar!'
end
end
クラスの拡張:
module Extensions
module ClassMethods
def bar
'Extended Bar!'
end
end
def self.prepended(base)
base.extend(ClassMethods)
end
end
# prepend the extension
Foo.send(:prepend, Extensions)
クラスFooE:
require './Foo'
class FooE < Foo
end
とシンプルstartscript:
require 'pry'
require './FooE'
require './Extensions'
puts FooE.bar
スクリプトを開始すると、私は期待通りではなくBase Bar!
のようにExtended Bar!
を取得しません。適切に働くためには何を変える必要がありますか?
非常に素晴らしいです!どうもありがとう。明らかに私は拡張が何であるか分からなかった。 – Nessuno
すごく、ありがとう... – Fabio