定数が定義されたクラスがあります。次に、そのクラス定数にアクセスするクラス メソッドを定義します。これはうまくいきます。例:
#! /usr/bin/env ruby
class NonInstantiableClass
Const = "hello, world!"
class << self
def shout_my_constant
puts Const.upcase
end
end
end
NonInstantiableClass.shout_my_constant
次のように、このクラスメソッドを外部モジュールに移動しようとすると、私の問題が発生します。
#! /usr/bin/env ruby
module CommonMethods
def shout_my_constant
puts Const.upcase
end
end
class NonInstantiableClass
Const = "hello, world!"
class << self
include CommonMethods
end
end
NonInstantiableClass.shout_my_constant
Ruby はメソッドを、クラスではなくモジュールから定数を要求していると解釈します。
line 5:in `shout_my_constant': uninitialized constant CommonMethods::Const (NameError)
では、メソッドがクラス定数にアクセスできるようにするための魔法のトリックは何ですか? どうもありがとう。