显示在轨未决迁移(Show pending migrations in rails)

2019-08-03 00:48发布

是否有一个rake任务,显示在一个Rails应用程序挂起的迁移?

Answer 1:

rake db:migrate:status (Rails的3〜5)或rails db:migrate:status (导轨5)将实现此目的。 见这个承诺 。



Answer 2:

rake db:abort_if_pending_migrations (至少在Rails的2.3.3,不知道当它被引入)。 描述说,“如果有挂起迁移引发错误”。 这似乎是用来更多地用于其他任务的先决条件,但我猜你可以用它为您的目的。

编辑:这里是输出的刚刚产生的,而不是运行“测试”迁移之后的示例

rails_project theIV$ rake db:abort_if_pending_migrations
(in /Users/theIV/Sites/rails_project/)
You have 1 pending migrations:
  20090828200602 Test
Run "rake db:migrate" to update your database then try again.


Answer 3:

rake db:version会做到这一点on Rails的2。



Answer 4:

此命令将列出所有迁移对自己的状态( UPDOWN

导轨3和4

rake db:migrate:status

轨道5

rake db:migrate:status

# Or

rails db:migrate:status


Answer 5:

这适用于轨道5.2

ActiveRecord::Base.connection.migration_context.needs_migration?


Answer 6:

尝试耙-h(帮助),并看看耙-N(=耙--dry运行)。 所以,大概就像耙-n分贝:迁移应该得到你想要的东西。



Answer 7:

以下命令检查迁移状态:

rake db:migrate:status

要么

当你运行你的服务器,它会显示一个消息,首先运行挂起的迁移。



Answer 8:

可能不太什么OP是要求,但如果你只是需要快速检查是否有任何迁移都等待在rake任务使用,而不诉诸

耙分贝:迁移:状态| 用grep下来(如果你在Windows上可能无法正常工作)

ActiveRecord的:: Migration.check_pending! (引发的ActiveRecord :: PendingMigrationError,你需要抢救)

您可以使用needs_migration? 方法: https://apidock.com/rails/v4.0.2/ActiveRecord/Migrator/needs_migration%3F/class



Answer 9:

如果你需要一个bash一行程序,以确定是否运行了迁移(例如,仅在迁移的Heroku释放阶段的命令时,有一个挂起的迁移),这工作:

(rails db:migrate:status | grep "^\s*down") && rails db:migrate || echo "No pending migrations found."


Answer 10:

如果你想看到多少迁移完成或待你可以看到使用以下命令。

rails db:migrate:status

更多此链接: Rails的活动记录迁移



文章来源: Show pending migrations in rails