数据库清理器无法在 Rails 应用程序中检测到 ORM

Database Cleaner unable to detect ORM in Rails application

执行$ rspec时出现如下错误:

No known ORM was detected! Is ActiveRecord, DataMapper, Sequel, MongoMapper, Mongoid, Moped, or CouchPotato, Redis or Ohm loaded? (DatabaseCleaner::NoORMDetected)

这是来自 spec_helper.rb 文件的片段:

config.before(:suite) do
  DatabaseCleaner.strategy = :transaction
  DatabaseCleaner.clean_with(:truncation)
end

有问题的 Rails 应用程序使用 ActiveRecord 作为 ORM 并且 documentation for Database Cleaner 声明它检查首先是 ActiveRecord

应用程序的 Rails 版本是 5.0.0.beta2

错误的原因是什么,如何解决?

原因:

错误是由于缺少模型造成的。因为没有模型,应用程序没有指定ORM。因此,DatabaseCleaner 无法选择合适的策略。

解决方案

至少应创建一个模型。这可以通过 rails generate scaffoldrails generate model 命令完成。