【问题标题】:Newbie: About migration (how does it affect the test database)新手:关于迁移(对测试数据库有什么影响)
【发布时间】:2011-11-09 12:55:06
【问题描述】:

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

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

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 migration rake


    【解决方案1】:

    您可以显式运行rake db:test:prepare,它实际上只是从开发模式构建一个新的测试数据库(因此它运行迁移,而是从当前开发模式创建一个副本) .

    当使用rake testrake spec 运行所有测试时,这是自动完成的。

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      在开发数据库上完成迁移后尝试bundle exec rake db:test:prepare

      【讨论】:

      • 每次迁移运行后是否必须执行步骤(为了与开发环境具有相同的数据库)?
      • 是的,如果您不在您的测试应用程序中制作,那么您将只能使用旧架构,如果测试使用新字段,您会发现错误。
      • 运行命令时出现“'mysql2'不支持的任务”错误
      • 你使用 Rails 2?可能你应该更新 mysql2 gem。 github.com/brianmario/mysql2/issues/83。或者,如果您使用 3.1 尝试“rake test:prepare”
      【解决方案3】:

      我最终选择运行以下命令,它只是在测试环境中运行迁移。

       RAILS_ENV='test' rake db:migrate
      

      【讨论】:

      • 这可行,但比rake db:test:prepare 更冗长,更不标准。
      猜你喜欢
      • 2018-06-29
      • 2017-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多