Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 新手:关于迁移(它如何影响测试数据库)_Ruby On Rails_Ruby On Rails 3_Migration_Rake - Fatal编程技术网

Ruby on 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,它实际上只是从开发模式构建一个新的测试

在Rails中,如果我创建并运行一个用于向表中添加一个新列的迁移,那么该表将在开发数据库中有一个新列


但是,测试数据库如何更新/注意到表中有新列?我是否需要从控制台显式切换到测试环境,并在测试环境中再次运行迁移?

在开发数据库上完成迁移后尝试
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
更详细,更不标准。