【发布时间】:2011-11-09 12:55:06
【问题描述】:
在 Rails 中,如果我创建并运行一个 migration 用于将一个新列添加到表中,那么该表将在 开发数据库中拥有一个新列。
但是,测试数据库如何也被更新/注意到在表中有新列?我是否需要从控制台显式切换到测试环境并在测试环境中再次运行迁移?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 migration rake
在 Rails 中,如果我创建并运行一个 migration 用于将一个新列添加到表中,那么该表将在 开发数据库中拥有一个新列。
但是,测试数据库如何也被更新/注意到在表中有新列?我是否需要从控制台显式切换到测试环境并在测试环境中再次运行迁移?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 migration rake
您可以显式运行rake db:test:prepare,它实际上只是从开发模式构建一个新的测试数据库(因此它不运行迁移,而是从当前开发模式创建一个副本) .
当使用rake test 或rake spec 运行所有测试时,这是自动完成的。
希望这会有所帮助。
【讨论】:
在开发数据库上完成迁移后尝试bundle exec rake db:test:prepare。
【讨论】:
我最终选择运行以下命令,它只是在测试环境中运行迁移。
RAILS_ENV='test' rake db:migrate
【讨论】:
rake db:test:prepare 更冗长,更不标准。