是否有rake任务显示rails应用程序中的挂起迁移?
rake db:migrate:status
(Rails 3 to 5) or rails db:migrate:status
(Rails 5) will accomplish this. See this commit .
There is rake db:abort_if_pending_migrations
(at least in Rails 2.3.3, not sure when it was introduced). The description says 'Raises an error if there are pending migrations'. This seems to be used more as a prerequisite for other tasks, but I'm guessing you could use it for your purposes.
EDIT: Here is an example of the output after having just generated and not run a 'test' migration
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.
This command will list all migrations with their status ( UP
or DOWN
)
Rails 3 and 4
rake db:migrate:status
Rails 5
rake db:migrate:status
# Or
rails db:migrate:status
rake db:version
将在Rails 2上实现这一点。
这适用于rails 5.2
ActiveRecord::Base.connection.migration_context.needs_migration?
Try rake -h (help) and have a look at rake -n (= rake --dry-run). So probably something like rake -n db:migrate should get you what you want.
Following command to check migration status:
rake db:migrate:status
OR
when you run your server, it will display a message to run your pending migration first.
Might not quite be what OP is asking for, but if you just need to quickly check if any migrations are pending for use in a rake task, without resorting to
rake db:migrate:status | grep down (might not work if you're on Windows)
ActiveRecord::Migration.check_pending! (raises ActiveRecord::PendingMigrationError that you need to rescue)
you can use needs_migration? method: https://apidock.com/rails/v4.0.2/ActiveRecord/Migrator/needs_migration%3F/class
如果您需要bash one-liner来确定是否运行迁移(例如,只有在有挂起的迁移时在Heroku发布阶段命令中迁移),这可以:
(rails db:migrate:status | grep "^\s*down") && rails db:migrate || echo "No pending migrations found."
If you want to see how much migration is done or pending you can see using below command.
rails db:migrate:status
More on this link: Rails Active Record Migration
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.