【问题标题】:Using database_cleaner, mongoid and active_admin causes specs to fail with ActiveRecord::ConnectionNotEstablished使用 database_cleaner、mongoid 和 active_admin 会导致规范因 ActiveRecord::ConnectionNotEstablished 而失败
【发布时间】:2012-03-04 23:12:08
【问题描述】:

我有一个使用 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版本如下:

  • activeadmin (0.4.2)
  • database_cleaner (0.7.1)
  • mongoid (2.4.5)
  • meta_search (1.1.3)
  • 活动记录 (3.2.1)

测试失败的文件,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

【问题讨论】:

  • 你应该把你的解决方案放在一个答案中并接受它;这是首选流程。
  • @FélixSaparelli 我愿意,但遗憾的是,我需要更多积分才能做到这一点。随意复制粘贴我的解决方案 =D
  • @dznz:据我所知,回答您自己的问题没有代表要求;只有一段等待时间。
  • @BoltClock 你是对的,当然。我只是一个很没有耐心的人=D

标签: ruby-on-rails rspec mongoid activeadmin


【解决方案1】:

[从问题中移出]

似乎 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 文件,应用程序的其余部分忽略了该配置。谢天谢地,这不是必需的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-05
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-21
    • 2013-10-14
    相关资源
    最近更新 更多