Railsアプリで保留中の移行を示すrakeタスクはありますか?
rake db:migrate:status
(レール3〜5)またはRails db:migrate:status
(レール5)はこれを達成します。 this commit を参照してください。
がある 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
)を一覧表示します
レール3および4
rake db:migrate:status
レール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のようなものが必要なものを取得するはずです。
移行を実行するかどうかを決定するためにbashワンライナーが必要な場合(たとえば、保留中の移行がある場合に Herokuリリースフェーズコマンド でのみ移行する)、これは機能します:
(Rails db:migrate:status | grep "^\s*down") && Rails db:migrate || echo "No pending migrations found."
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
移行ステータスを確認する次のコマンド:
rake db:migrate:status
OR
サーバーを実行すると、保留中の移行を最初に実行するためのメッセージが表示されます。
どれだけの移行が行われたか、または保留中かを確認したい場合は、以下のコマンドを使用して確認できます。
Rails db:migrate:status
このリンクの詳細: Rails Active Record Migration