在Rails 4.0.0.rc1和Ruby 2.0.0中,运行迁移后,通过rspec运行测试时会出现以下错误:
``` /Users/peeja/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/activerecord-4.0.0.rc1/lib/active_record/migration.rb:376:in `check_pending!': Migrations are pending; run 'rake db:migrate RAILS_ENV=test' to resolve this issue. (ActiveRecord::PendingMigrationError) ```
这似乎不正常。没有人会迁移他们的测试数据库,对吧?他们是使用 `db:test:prepare` ,但是我已经忘记做了。因此,我运行了 `rake db:test:prepare` 并再次运行 `rspec` 命令... 结果还是同样的错误。
如果实际上运行 `rake db:migrate RAILS_ENV=test`,则错误确实消失了。
发生了什么事?这在Rails 4中是新功能吗?
``` /Users/peeja/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/activerecord-4.0.0.rc1/lib/active_record/migration.rb:376:in `check_pending!': Migrations are pending; run 'rake db:migrate RAILS_ENV=test' to resolve this issue. (ActiveRecord::PendingMigrationError) ```
这似乎不正常。没有人会迁移他们的测试数据库,对吧?他们是使用 `db:test:prepare` ,但是我已经忘记做了。因此,我运行了 `rake db:test:prepare` 并再次运行 `rspec` 命令... 结果还是同样的错误。
如果实际上运行 `rake db:migrate RAILS_ENV=test`,则错误确实消失了。
发生了什么事?这在Rails 4中是新功能吗?
rake db:test:prepare
是否有效? - itsnikolayschema.rb
是最新的,rake db:test:prepare
也不起作用。只有迁移测试数据库才能生效。 - Krisrake db:migrate RAILS_ENV=test
对我来说解决了问题。 - nope2023rails_helper.rb
文件中的RSpec.configure
块之前添加ActiveRecord::Migration.maintain_test_schema!
来修复了这个问题。文档链接:https://relishapp.com/rspec/rspec-rails/docs/upgrade#pending-migration-checks - Suraj