Ruby on rails 新手:关于迁移(它如何影响测试数据库)
在Rails中,如果我创建并运行一个用于向表中添加一个新列的迁移,那么该表将在开发数据库中有一个新列Ruby on rails 新手:关于迁移(它如何影响测试数据库),ruby-on-rails,ruby-on-rails-3,migration,rake,Ruby On Rails,Ruby On Rails 3,Migration,Rake,在Rails中,如果我创建并运行一个用于向表中添加一个新列的迁移,那么该表将在开发数据库中有一个新列 但是,测试数据库如何更新/注意到表中有新列?我是否需要从控制台显式切换到测试环境,并在测试环境中再次运行迁移?在开发数据库上完成迁移后尝试bundle exec rake db:test:prepare。在开发数据库上完成迁移后尝试bundle exec rake db:test:prepare数据库。您可以显式运行rake db:test:prepare,它实际上只是从开发模式构建一个新的测试
但是,测试数据库如何更新/注意到表中有新列?我是否需要从控制台显式切换到测试环境,并在测试环境中再次运行迁移?在开发数据库上完成迁移后尝试
bundle exec rake db:test:prepare
。在开发数据库上完成迁移后尝试bundle exec rake db:test:prepare
数据库。您可以显式运行rake db:test:prepare
,它实际上只是从开发模式构建一个新的测试数据库(因此它不运行迁移,而是从当前开发模式创建一个副本)
当使用rake test
或rake spec
运行所有测试时,这将自动完成
希望这有帮助。您可以显式运行rake db:test:prepare,它实际上只是从开发模式构建一个新的测试数据库(因此它不运行迁移,而是从当前开发模式创建一个副本) 当使用
rake test
或rake spec
运行所有测试时,这将自动完成
希望这有帮助。我最终选择运行以下命令,该命令仅在测试环境中运行迁移
RAILS_ENV='test' rake db:migrate
我最后选择运行以下命令,该命令仅在测试环境中运行迁移
RAILS_ENV='test' rake db:migrate
在每次迁移运行之后(为了拥有与开发环境相同的数据库),这是一个必须的步骤吗?是的,如果您不在测试中使用旧模式,那么您的测试应用程序将只使用旧模式,如果测试使用新字段,您将捕获错误。当我运行命令您使用rails 2时,出现了“任务不受'mysql2'支持”错误?也许你应该更新mysql2 gem。或者,如果您使用3.1尝试“rake test:prepare”,那么在每次迁移运行之后(为了拥有与开发环境相同的数据库),这是一个强制步骤吗?是的,如果您不在测试中使用,那么您的应用程序将只使用旧模式,如果测试使用新字段,您将发现一个错误。我得到了“Task not supported by'mysql2'”运行命令时出错您使用rails 2吗?也许你应该更新mysql2 gem。或者,如果您使用3.1尝试“rake test:prepare”,这将起作用,但比
rake db:test:prepare
更详细,更不标准。这将起作用,但比rake db:test:prepare
更详细,更不标准。