class_eval を使用してクラスを拡張したいのですが、元のクラスから定数にアクセスしようとすると、次のエラーが発生しました。
NameError: 初期化されていない定数 HIS_CONSTANT from ./my_module.rb:35:in `show_his_constant' from (irb):4
サンプルプログラムでテストしましたが、動作しません。誰かがこれが機能しない理由を確認して確認できますか? ありがとう!
module MyModule
puts "start my module"
def mytest
puts "mytest"
end
module YourModule
def yourtest
puts "yourtest"
end
end
end
module MyModule
module YourModule
module HisModule
HIS_CONSTANT = 'THIS_IS_A_CONSTANT'
end
end
end
module MyModule
module YourModule
class HisClass
include HisModule
def show_constant
puts HIS_CONSTANT
end
end
end
end
MyModule::YourModule::HisClass.class_eval do
def show_his_constant
puts HIS_CONSTANT
end
end
ところで、私はこの方法がうまくいくことを知っています:
MyModule::YourModule::HisClass.class_eval do
def show_his_constant
puts MyModule::YourModule::HisModule::HIS_CONSTANT
end
end
しかし、名前空間は既に含まれているはずなので、名前空間を使用してアクセスしたくありません。