私は次のようなモジュールを持っています
module MyModule
def self.included(base)
base.extend ClassMethods
end
module ClassMethods
def foo
@@var = 1
end
def bar
puts @@var
end
end
end
class A
include MyModule
foo
end
class B < A; end
となることによって
B.bar outputs '1'.
ただし、.fooが呼び出された場合にのみ.barを定義したいと思います。私は試した
module MyModule
def self.included(base)
base.extend ClassMethods
end
module ClassMethods
def foo
@@var = 1
extend SingletonMethods
end
module SingletonMethods
def bar
puts @@var
end
end
end
問題はそれです
B.bar
エラー「MyModule::SingletonMethodsの初期化されていないクラス変数@@var」を返します。.fooで定義された変数を.barで使用できるようにするにはどうすればよいですか?