我的团队项目是使用Mongoid 4的Rails 4.2应用程序。我们添加的新功能要求我们从Postgres数据库中读取数据,并通过中间对象在应用程序中使用这些记录。换句话说,我们的应用程序将使用包含来自Mongoid模型和ActiveRecord模型的混合数据的ActiveModel对象(非持久化),因此可以使用控制器和视图等执行所有正常的酷Rails内容(我们认为& #39;聪明。)现在的意图是我们永远不会写入SQL表,只是阅读。存储的任何新数据都将在mongodb中。
对于我的开发环境,第一步看起来非常简单:
require "active_record/railtie"
添加到了application.rb 使用rails控制台,我能够向自己证明我可以在两个数据库中搜索/查找对象。到目前为止一切都很好。
当我第一次启动rspec测试时,有大量与验证错误相关的失败,因为"记录已存在该名称"。很长的调查故事,我通过将所有DatabaseCleaner调用设置为DatabaseCleaner[:mongoid]
来修复,并且再次传递了rspec。 (我仍然不知道幕后发生了什么。)
但是,黄瓜(功能)测试?我甚至无法让他们开始。它一直在说:
Migrations are pending. To resolve this issue, run: bin/rake db:migrate RAILS_ENV=test
没有!我们所有的迁移都是针对MONGO的。没有SQL / ActiveRecord迁移。毫不奇怪,耙子失败了:
rake aborted! ArgumentError: wrong number of arguments (2 for 0).
我尝试了这一系列命令:
rake db:drop RAILS_ENV=test
rake db:create RAILS_ENV=test
rake db:schema:load RAILS_ENV=test
但是黄瓜仍会提供相同的迁移待定错误。
所以我被卡住了!我还没有找到任何人做我们正在尝试做的事情。我知道有成为某人,显然我找不到合适的搜索字词。
所有这一切中最糟糕的部分是我根本不打算使用ActiveRecord测试数据库,我只是想在我的测试中模拟这些记录。我怎么能告诉应用程序,"我只需要ActiveRecord用于运行时,而不是测试。停止查看迁移,ActiveRecord,那些不适合你!"
我用完了想法和单词来搜索。我已经尝试解决这个问题几天了,尝试了很多不同的事情,请原谅我,如果我把这些问题留在这里。非常感谢任何帮助。