为什么Rails要求我运行rake db:一次又一次地迁移RAILS_ENV = test?

时间:2016-01-04 08:08:10

标签: ruby-on-rails ruby

你能帮我解决这个问题:

执行时

root@myproject-dev:~/projects/myproject-dev$ rake db:migrate:status

database: myproject-db

 Status   Migration ID    Migration Name
--------------------------------------------------
   (...)
   up     20151104094107  Add need to something
   up     20151111082356  ********** NO FILE **********
   up     20151113024714  Add approved something
   up     20151116075224  Add something
   up     20151130041605  Change column name

root@myproject-dev:~/projects/myproject-dev$ bundle exec rspec

RSpec is shutting down and will print the summary report... Interrupt again to force quit.
/home/xxx/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.6/lib/active_record/migration.rb:389:in `check_pending!':  (ActiveRecord::PendingMigrationError)

Migrations are pending. To resolve this issue, run:

        bin/rake db:migrate RAILS_ENV=test

状态显示一切正常,rake db:migrate RAILS_ENV = test已经正确执行。如果我再次执行它,我会得到错误(当然)。

为什么Rails要求我运行rake db:一次又一次地迁移RAILS_ENV = test?

1 个答案:

答案 0 :(得分:2)

有3个以上的默认Rails环境:

  • 发展
  • 生产
  • 测试

每个人都应该有不同的设置,包括不同的数据库来操作。这样做是为了在不适当的环境中运行时分离环境并防止意外数据损坏/损坏。

电子。 G。在test环境中, rake test的每次执行都会清除数据库以防止副作用rspec会自动为您设置test个环境。

因此,在您的情况下,您应该迁移测试数据库

RAILS_ENV=test rake db:migrate:status
RAILS_ENV=test rake db:migrate

希望它有所帮助。

相关问题