在rspec
文件夹中创建自定义rails_admin
动作之前,我的lib
测试执行得很好。
用于创建仪表板的自定义操作如下:/lib/rails_admin.rb
module RailsAdmin
module Config
module Actions
class Dashboard < RailsAdmin::Config::Actions::Base
RailsAdmin::Config::Actions.register(self)
register_instance_option :root? do
true
end
end
end
end
end
它给出了预期的结果,即:新的仪表板。 但是现在当我运行rspec测试(任何测试)时,会出现以下错误:
Bundler :: GemRequireError:
尝试加载gem'rails_admin'时出错。
宝石加载错误是:未初始化的常数 RailsAdmin :: Config :: Actions :: Base
在运行任何测试前,rspec会从lib文件夹中加载所有文件,但是由于某种原因找不到RailsAdmin。
要摆脱错误,我尝试手动添加rails_admin文件
require 'rails_admin/config/actions'
require 'rails_admin/config/actions/base'
module RailsAdmin
module Config
module Actions
class Dashboard < RailsAdmin::Config::Actions::Base
RailsAdmin::Config::Actions.register(self)
register_instance_option :root? do
true
end
end
end
end
end
它不能解决问题,只是将错误移至下一级并给出以下错误:
失败/错误:需要File.expand_path('../../ config / environment', 文件)
NoMethodError:未定义的方法
config' for RailsAdmin:Module ./config/initializers/rails_admin.rb:1:in
'
rails_admin.rb
第一行很简单:
RailsAdmin.config do |config|
为什么rspec无法正确加载rails_admin gem?
答案 0 :(得分:0)
尽管我不知道这为什么起作用,但我找到了一个可行的解决方案:
我没有创建lib/rails_admin.rb
,而是在其中创建了一个config
子文件夹和一个actions
子文件夹,然后将我的rails_admin.rb
文件放入其中。
我得到了以下树:lib/config/actions/rails_admin.rb
。您还需要在config/initializers/rails_admin.rb
中更改此文件的路径:
在我的情况下,我有require Rails.root.join('lib', 'rails_admin.rb')
并将其更改为require Rails.root.join('lib', 'config', 'actions', 'rails_admin.rb')
。
然后运行bundle exec rspec
即可正常工作。