Show pending migrations in rails

2019-03-07 21:33发布

问题:

Is there a rake task that shows the pending migrations in a rails app?

回答1:

rake db:migrate:status will accomplish this in Rails 3. See the commit.



回答2:

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.


回答3:

rake db:version will accomplish this on Rails 2.



回答4:

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


回答5:

This works for rails 5.2

ActiveRecord::Base.connection.migration_context.needs_migration?


回答6:

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.



回答7:

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.



回答8:

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



回答9:

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