【问题标题】:Rspec-rails drops migrations after runningRspec-rails 运行后丢弃迁移
【发布时间】:2015-04-11 21:10:36
【问题描述】:

在 Rails 项目中从 Rspec 2.x 升级到 3.x - 使用 Rails 4.1.x。

当我运行 RSpec 时,我遇到了一个非常奇怪的行为。这是事件的顺序。

  1. 测试环境和正常环境都已完全迁移。我测试一下。

  2. 我用命令$ rspec运行rspec

  3. 然后我可以检查我的迁移,这就是结果(仅用于测试,生产认为它不会丢失迁移):

我不明白为什么这会丢弃我的所有迁移。也许这也有助于说:如果我再次尝试在测试中迁移,我会收到此错误:

首先,为什么它会放弃所有迁移?实际上并没有删除它们,它们仍然存在 - 因为表格都仍然存在。

[1]:

【问题讨论】:

    标签: ruby-on-rails-4 rspec rspec-rails rspec3


    【解决方案1】:

    Rspec 3 has a new feature 利用 Rails 4.1+ 中的更新,自动保持开发和测试模式同步。因此,这意味着如果您已经在开发中运行了迁移,则无需使用 RAILS_ENV=test 再次运行它们。您可以通过查看 rails_helper.rb 并查看您是否设置了 ActiveRecord::Migration.maintain_test_schema! 来仔细检查您是否已激活此功能(Rspec 3 默认)。

    【讨论】:

    • 我已经看到了这个,并尝试在运行和不运行 maintain_test_schema! 的情况下运行它 - 但行为并没有改变。有什么想法吗?
    • 如果 rails+rspec 正在为您维护您的测试数据库,那么当 RAILS_ENV=test 时您不需要运行迁移——那么您为什么要再次尝试运行它们呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-30
    • 2010-11-21
    • 1970-01-01
    • 2020-10-24
    相关资源
    最近更新 更多