Разве они не должны делать то же самое? Почему это происходит? На данный момент я использую module_eval в своем коде по необходимости, но const_set кажется более читаемым. Независимо от того, я действительно хотел бы понять, почему это происходит.Разница между модулем № const_set и модулем # module_eval
вот код:
class A
def foo
FOO
end
def self.foo
FOO
end
end
module B
class C < A
end
end
B.const_set(:FOO,'asdf')
>> B::C.foo
NameError: uninitialized constant A::FOO
from ./foo.rb:6:in `foo'
from (irb):1
>> B.module_eval {FOO='asdf'}
=> "asdf"
>> B::C.foo
=> "asdf"
Не забудьте признать, что кто-то ответил на ваш вопрос; выберите ответ. – Tom