在rails中显示待定迁移
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在rails中显示待定迁移相关的知识,希望对你有一定的参考价值。
是否有rake任务显示rails应用程序中的挂起迁移?
rake db:migrate:status
(Rails 3到5)或rails db:migrate:status
(Rails 5)将实现这一目标。见this commit。
如果您想查看已完成或待处理的迁移量,可以使用以下命令查看。
rails db:migrate:status
更多相关链接:Rails Active Record Migration
有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.
rake db:version
将在Rails 2上实现这一目标。
此命令将列出所有迁移及其状态(UP
或DOWN
)
Rails 3和4
rake db:migrate:status
Rails 5
rake db:migrate:status
# Or
rails db:migrate:status
这适用于rails 5.2
ActiveRecord::Base.connection.migration_context.needs_migration?
尝试rake -h(帮助)并查看rake -n(= rake --dry-run)。所以像rake -n db:migrate这样的东西可能会得到你想要的东西。
按照命令检查迁移状态:
rake db:migrate:status
要么
当您运行服务器时,它将显示一条消息,以便首先运行挂起的迁移。
可能不是OP所要求的,但如果您只是需要快速检查是否有任何迁移待在rake任务中使用,而不是诉诸于
rake db:migrate:status | grep down(如果你在Windows上可能不起作用)
ActiveRecord的:: Migration.check_pending! (引发你需要救援的ActiveRecord :: PendingMigrationError)
你可以使用needs_migration吗?方法:https://apidock.com/rails/v4.0.2/ActiveRecord/Migrator/needs_migration%3F/class
如果您需要bash one-liner来确定是否运行迁移(例如,只有在有挂起的迁移时才在Heroku release phase command中迁移),这可以:
(rails db:migrate:status | grep "^\s*down") && rails db:migrate || echo "No pending migrations found."
以上是关于在rails中显示待定迁移的主要内容,如果未能解决你的问题,请参考以下文章