回答:
rake db:migrate:status
(Rails 3から5)またはrails db:migrate:status
(Rails 5)がこれを実現します。このコミットをご覧ください。
up
移行が実行されたことを意味します。down
移行が実行されていないことを意味します。
rake -T
が、他のものは表示されますか?
up
移行が実行されたことを意味します。 down
移行が実行されていないことを意味します。
あります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.
このコマンドは、すべてのマイグレーションをそのステータス(UP
またはDOWN
)とともに一覧表示します
Rails 3および4
rake db:migrate:status
Rails 5
rake db:migrate:status
# Or
rails db:migrate:status
rake -h(ヘルプ)を試して、rake -n(= rake --dry-run)を確認してください。したがって、おそらくrake -n db:migrateのようなもので、必要なものが得られるはずです。
OPが求めているものとはまったく異なる場合がありますが、rakeタスクで使用するために保留されているマイグレーションがあるかどうかをすばやく確認する必要がある場合は、
rake db:migrate:status | grepダウン(Windowsを使用している場合は機能しない可能性があります)
ActiveRecord :: Migration.check_pending!(あなたが救助する必要があるActiveRecord :: PendingMigrationErrorを発生させます)
あなたはneeds_migrationを使用できますか?メソッド:https : //apidock.com/rails/v4.0.2/ActiveRecord/Migrator/needs_migration%3F/class
ActiveRecord::Migrator.needs_migration?
Rails 5.1で
移行がどのくらい行われているか、または保留中かを確認したい場合は、以下のコマンドを使用して確認できます。
rails db:migrate:status
このリンクの詳細:Rails Active Record Migration
移行を実行するかどうかを決定するためにbashワンライナーが必要な場合(たとえば、保留中の移行がある場合にHerokuリリースフェーズコマンドでのみ移行する)、これは機能します。
(rails db:migrate:status | grep "^\s*down") && rails db:migrate || echo "No pending migrations found."
Don't know how to build task 'db:migrate:status'
レールに乗ります3.2.8