我有一个使用mongoid,database_cleaner和rspec的现有项目。我尝试使用active_admin patches available添加active_admin。 ActiveAdmin假设它位于ActiveRecord项目中,最重要的是通过它对meta_search gem的依赖。
当我去运行我的规格时,它们都会因以下错误而失败:
Failure/Error: Unable to find matching line from backtrace
ActiveRecord::ConnectionNotEstablished:
ActiveRecord::ConnectionNotEstablished
# ./spec/support/database_cleaner.rb:12:in `block (2 levels) in <top (required)>'
相关库的gem版本如下:
测试失败的文件spec/support/database_cleaner.rb
:
require 'database_cleaner'
RSpec.configure do |config|
config.before(:suite) do
DatabaseCleaner.strategy = :truncation
DatabaseCleaner.orm = "mongoid"
end
config.before(:each) do
DatabaseCleaner.clean
end
end
答案 0 :(得分:14)
[移出问题]
似乎database_cleaner尝试在its initialization method
中自动检测可用的ORM这可以通过更改spec/support/database_cleaner.rb
文件来抢占:
RSpec.configure do |config|
config.before(:suite) do
DatabaseCleaner[:mongoid].strategy = :truncation
end
end
调用configuration中的[]
方法会覆盖自动检测,以便不再添加ActiveRecord。
另一种解决方法是重新添加一个带有sqlite3配置的config/database.yml
文件,忽略应用程序的其余部分。谢天谢地,没必要。