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 吗?