从 Ruby 中的文件名动态创建自动加载命令
Dynamically create autoload command from filenames in Ruby
我正在使用 ruby、rspec、capybara 和 selenium 测试一个 Web 应用程序,我 运行 遇到一个我不知道如何处理的 uninitialized constant ActiveAdminLoginPage
异常解决。
在 spec_helper.rb 中,我需要以下内容:
Dir[File.join(Dir.pwd, 'spec/page_objects/**/*.rb')].each { |f| require f }
我有 2 个 classes
spec/page_objects/products/active_admin_login_page.rb
module Products
class ActiveAdminLoginPage < ::ActiveAdminLoginPage
...
end
end
继承自
spec/page_objects/active_admin_login_page.rb
不幸的是,子 class 在父 class 之前加载。
如何从目录中的所有文件名动态创建自动加载命令?
我想替换此命令:
Dir[File.join(Dir.pwd, 'spec/page_objects/**/*.rb')].each { |f| require f }
使用自动加载命令。
如何使用 require
将您的依赖项加载到需要它的文件中?
require
只加载一次文件,因此您不会遇到任何副作用。
或者,更好的是,您可以使用 auto_load
,它在后台使用 require
,但它以更智能的方式实现
autoload :ActiveAdminLoginPage, 'active_admin_login_page'
我正在使用 ruby、rspec、capybara 和 selenium 测试一个 Web 应用程序,我 运行 遇到一个我不知道如何处理的 uninitialized constant ActiveAdminLoginPage
异常解决。
在 spec_helper.rb 中,我需要以下内容:
Dir[File.join(Dir.pwd, 'spec/page_objects/**/*.rb')].each { |f| require f }
我有 2 个 classes
spec/page_objects/products/active_admin_login_page.rb
module Products
class ActiveAdminLoginPage < ::ActiveAdminLoginPage
...
end
end
继承自
spec/page_objects/active_admin_login_page.rb
不幸的是,子 class 在父 class 之前加载。
如何从目录中的所有文件名动态创建自动加载命令? 我想替换此命令:
Dir[File.join(Dir.pwd, 'spec/page_objects/**/*.rb')].each { |f| require f }
使用自动加载命令。
如何使用 require
将您的依赖项加载到需要它的文件中?
require
只加载一次文件,因此您不会遇到任何副作用。
或者,更好的是,您可以使用 auto_load
,它在后台使用 require
,但它以更智能的方式实现
autoload :ActiveAdminLoginPage, 'active_admin_login_page'