我有第三方代码,如下所示:
class Foo
def initialize
@hello = "world"
end
def msg
@hello
end
end
然后,我添加了一个包含这些内容的新文件foo_redefinition.rb
class Foo
def initialize
@hello = "welt"
end
end
然后,另一个第三方代码在我的主类中调用一个方法,在我的主类文件中我做require_relative 'foo_redefinition'
。但是,当第三方代码(调用我的方法,因此读取我的主文件,需要重新定义)调用Foo.msg后,它返回" world",而不是" welt"。
另外,当我这样做时
require_relative 'foo_redefinition'
# ... lots of code
Foo::new.msg #=> world (instead of welt)
我的问题是:
答案 0 :(得分:2)
我担心Foo
是一个懒惰的autoload
版课程,而且你正在重新定义&#34; <{1}}加载前initialize
。
试试这个
Foo
这会强制Foo.class_eval do
def initialize
@hello = "welt"
end
end
在重新定义任何内容之前加载。