web-dev-qa-db-ja.com

railsで保留中の移行を表示

Railsアプリで保留中の移行を示すrakeタスクはありますか?

151
Readonly

rake db:migrate:status(レール3〜5)またはRails db:migrate:status(レール5)はこれを達成します。 this commit を参照してください。

238
jrdioko

がある 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.
36
theIV

rake db:versionは、Rails 2。

15
gerryster

このコマンドは、すべての移行とそのステータス(UPまたはDOWN)を一覧表示します

レール3および4

rake db:migrate:status

レール5

rake db:migrate:status

# Or

Rails db:migrate:status
15
Deepak Mahakale

これは、Rails 5.2

ActiveRecord::Base.connection.migration_context.needs_migration?
3
Sairam

Rake -h(ヘルプ)を試して、rake -n(= rake --dry-run)を見てください。そのため、おそらくrake -n db:migrateのようなものが必要なものを取得するはずです。

2
John Lockwood

移行を実行するかどうかを決定するためにbashワンライナーが必要な場合(たとえば、保留中の移行がある場合に Herokuリリースフェーズコマンド でのみ移行する)、これは機能します:

(Rails db:migrate:status | grep "^\s*down") && Rails db:migrate || echo "No pending migrations found."
1
niborg

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

1
wondersz1

移行ステータスを確認する次のコマンド:

rake db:migrate:status

OR

サーバーを実行すると、保留中の移行を最初に実行するためのメッセージが表示されます。

1
puneet18

どれだけの移行が行われたか、または保留中かを確認したい場合は、以下のコマンドを使用して確認できます。

Rails db:migrate:status

このリンクの詳細: Rails Active Record Migration

0
Foram Thakral