ruby-on-rails - 使用 database_cleaner、mongoid 和 active_admin 会导致规范因 ActiveRecord::ConnectionNotEstablished 而失败

标签 ruby-on-rails rspec mongoid activeadmin

我有一个使用 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版本如下:
  • 事件管理员 (0.4.2)
  • 数据库清洁器 (0.7.1)
  • mongoid (2.4.5)
  • 元搜索 (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
    

    最佳答案

    [移自问题]

    似乎 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。

    另一种解决方法是重新添加 config/database.yml文件中的 sqlite3 配置被应用程序的其余部分忽略。谢天谢地,这没有必要。

    关于ruby-on-rails - 使用 database_cleaner、mongoid 和 active_admin 会导致规范因 ActiveRecord::ConnectionNotEstablished 而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9559747/

    相关文章:

    mysql - 使用Rails迁移将类型为 "datetime"的mysql列转换为 "time"

    ruby-on-rails - 如何 stub 事件记录关系以使用 rspec 测试 where 子句?

    ruby-on-rails - Rspec与ActiveRecord::AssociationTypeMismatch一起下降,预期为“x”,运行所有规范时得到“x”;但不是分开的时候

    ruby-on-rails - railscast# 238 的问题,date_select 不适用于 rails 4。

    ruby-on-rails - Rails + Mongoid - 不要在 JSON 中返回 nil 值

    ruby-on-rails - POST 方法不适用于 rack-cors rails 4

    ruby-on-rails - 监控 Heroku 上的延迟作业

    ruby-on-rails - RSpec 没有显示返回和预期之间的完全差异

    ruby-on-rails - 处理后台作业的 Ruby RSpec 最佳实践是什么?我正在做一些不必要的复杂事情吗?

    与指定类名的 Mongoid Habtm 关系