Ruby 2.3 加载方法不再 return 类 加载 - Returns 布尔值
Ruby 2.3 load method doesn't return classes loaded anymore - Returns boolean instead
我正在将一个项目从 Ruby 1.8.7 迁移到 Ruby 2.3,并将 rails 从 2 迁移到 4。
我有这段代码可以在 1.8.7 中运行
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
我的样本文件abc.rb
class Abc
def ...
end
class Def
...
end
在 Ruby 1.8.7 中 class_list 是 [Abc,Def]
在 Ruby 2.3 中 class_list 是 [true] -(我不得不将行更改为 'class_list << load("/tmp/abc.rb")' 以使其给出这个输出 )
你们中有人知道如何用旧方法return吗?我想要的只是最后加载的 类 的类名。
这不是 Ruby。在 1.8.7 和 2.3.1 中,Ruby 的 load
总是 returned true
。但是,有 ActiveSupport load
使用 load_dependency
(http://apidock.com/rails/v3.0.0/ActiveSupport/Dependencies/Loadable/load_dependency) 执行文件中定义的 return 新常量。
你能在这里尝试使用 load_dependency
而不是 load
吗?
我正在将一个项目从 Ruby 1.8.7 迁移到 Ruby 2.3,并将 rails 从 2 迁移到 4。
我有这段代码可以在 1.8.7 中运行
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
我的样本文件abc.rb
class Abc
def ...
end
class Def
...
end
在 Ruby 1.8.7 中 class_list 是 [Abc,Def]
在 Ruby 2.3 中 class_list 是 [true] -(我不得不将行更改为 'class_list << load("/tmp/abc.rb")' 以使其给出这个输出 )
你们中有人知道如何用旧方法return吗?我想要的只是最后加载的 类 的类名。
这不是 Ruby。在 1.8.7 和 2.3.1 中,Ruby 的 load
总是 returned true
。但是,有 ActiveSupport load
使用 load_dependency
(http://apidock.com/rails/v3.0.0/ActiveSupport/Dependencies/Loadable/load_dependency) 执行文件中定义的 return 新常量。
你能在这里尝试使用 load_dependency
而不是 load
吗?