Pee*_*eja 58 ruby-on-rails rails-migrations ruby-on-rails-4
在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! ':正在等待迁移; 运行'rake db:migrate RAILS_ENV = test'来解决此问题.(ActiveRecord的:: PendingMigrationError)
这似乎不对.没有人迁移他们的测试数据库,是吗?他们db:test:prepare,这是公平的 - 我忘了做.所以我再次运行rake db:test:prepare并运行我的rspec命令......并看到同样的错误.
如果我真的rake db:migrate RAILS_ENV=test,错误确实消失了.
这是怎么回事?这是Rails 4中的新功能吗?
Pee*_*eja 69
从Rails 4.1开始,rake db:test:*不推荐使用任务.相反,你(test|spec)_helper.rb应该包括:
ActiveRecord::Migration.maintain_test_schema!
Run Code Online (Sandbox Code Playgroud)
这意味着每次测试运行时,测试数据库都将获得正确的模式,无论您是否从Rake任务运行它们.
Sil*_*oko 10
当我只是按照一个人的答案时,我仍然有时难以解决这个问题所以我已经把几个人扔在一起以获得更好的结果.以下是我采取的步骤,不确定哪些步骤是不必要的,但它最终会起作用.
ActiveRecord::Migration.maintain_test_schema!到test_helper.rb文件的顶部.rake test:preparerake db:migraterake db:migrate RAILS_ENV=test然后,当我运行bundle exec rake test时,每次都会得到干净的结果,没有待定的迁移.(这是我第一次生成脚手架后我做的事情).如果您确定其中一个步骤绝对没有必要,有人可以随意纠正我,但这就是我确保它每次都有效的方法.
小智 9
你也可以试试
rake db:migrate RAILS_ENV=test
Run Code Online (Sandbox Code Playgroud)
作为
db:test:prepare
Run Code Online (Sandbox Code Playgroud)
确实:)
| 归档时间: |
|
| 查看次数: |
85939 次 |
| 最近记录: |