我正在将一个项目从Ruby 1.8.7迁移到Ruby 2.3,并将其从2迁移到4.
我有这个代码在1.8.7
中工作if (oRegKey.SetKeyValue(keyName, keysValue, keyName) == ERROR_SUCCESS)
{
setKeyWorked = true;
}
我的示例文件abc.rb
class_list = []
original_mechanism = ActiveSupport::Dependencies.mechanism
ActiveSupport::Dependencies.mechanism = :load
begin
class_list += load("/tmp/abc.rb")
rescue Exception => e
debug e.backtrace
end
ActiveSupport::Dependencies.mechanism = original_mechanism
在Ruby 1.8.7中,class_list是 [Abc,Def]
在Ruby 2.3中,class_list是 [true] - (我必须将行更改为' class_list<< load(" /tmp/abc.rb") ;)'使它给出这个输出)
你们中的任何人都知道如何让它以旧方式回归?我想要的只是最后加载的类的ClassNames。
答案 0 :(得分:1)
这不是Ruby。 Ruby的load
总是在1.8.7和2.3.1中返回true
。但是,ActiveSupport load
使用load_dependency
(http://apidock.com/rails/v3.0.0/ActiveSupport/Dependencies/Loadable/load_dependency),它会返回文件中定义的新常量。
您可以尝试在此使用load_dependency
代替load
吗?