在Ruby中从文件名动态创建自动加载命令

我正在用ruby,rspec,capybara和uninitialized constant ActiveAdminLoginPage测试一个web应用程序,我遇到了一个uninitialized constant ActiveAdminLoginPage异常,我不知道该如何解决。

在spec_helper.rb我需要以下内容:

Dir[File.join(Dir.pwd, 'spec/page_objects/**/*.rb')].each { |f| require f }

我有2个班

spec/page_objects/products/active_admin_login_page.rb  

module Products
  class ActiveAdminLoginPage < ::ActiveAdminLoginPage
  ...
  end
end 

继承

spec/page_objects/active_admin_login_page.rb

不幸的是,子类在父类之前加载。

如何从目录中的所有文件名动态创建自动加载命令? 我想替换这个命令:

Dir[File.join(Dir.pwd, 'spec/page_objects/**/*.rb')].each { |f| require f }

用自动加载命令。


你如何使用require将你的依赖加载到需要它的文件中?

require加载一次文件,所以你不应该遇到任何副作用。

或者,甚至更好的是,您可以使用auto_load ,它在引擎中使用require ,但它以更智能的方式实现

autoload :ActiveAdminLoginPage, 'active_admin_login_page'
链接地址: http://www.djcxy.com/p/97085.html

上一篇: Dynamically create autoload command from filenames in Ruby

下一篇: Hashing polymorphic type the proper way