📝
rails: dbコマンドまとめ
普段 migrate や create とかしか使っていなかった rails db コマンドですが、
実は色々あったのでまとめました。
rails: db コマンドまとめ
| コマンド | 説明 | 使い方 |
|---|---|---|
| rails db:create | database.ymlの設定に従ってデータベースを作成 | 環境ごと: $ rails db:create [RAILS_ENV=環境(development, text, production)]すべて: $ rails db:create:all
|
| rails db:drop | datebase.ymlの設定に従ってデータベースを削除 | 環境ごと: $ rails db:drop [RAILS_ENV=環境(development, text, production)]すべて: $ rails db:drop:all
|
| rails db:migrate | 未実行のマイグレーションファイルを実行db/migrate内のスクリプトファイルからdatabaseにテーブルを作成します。 |
$ rails db:migrate [VERSION=バージョン番号 オプション] |
| rails db:migrate:down | 指定したmigrationファイルのself.downメソッドを実行 | rails db:migrate:down |
| rails db:migrate:redo | 指定したmigrationファイルのself.downメソッドを実行 | rails db:migrate:redo [STEP=ステップ数] |
| rails db:migrate:status | マイグレーションの状況を表示 | rails db:migrate:status |
| rails db:migrate:up | 指定したmigrationファイルのself.upメソッドを実行 | rails db:migrate:up |
| rails db:migrate:reset | テーブルの初期化 | $ rails db:migrate:reset |
| rails db:encryption:init | 特定の環境でアクティブレコード(Active Record)の暗号化を構成するための鍵セットを生成 | $ rails db:encryption:init |
| rails db:environment:set | データベースの環境値を設定 | $ rails db:environment:set |
| rails db:fixtures:load | フィクスチャを現在の環境のデータベースにロード | $ rails db:fixtures:load |
| rails dbconsole (または rails db) | コンソールを起動 |
$ rails dbconsole [オプション]短縮形: $ rails db [オプション]
|
| rails db:version | マイグレーションのバージョンを表示 | $ rails db:version [RAILS_ENV=環境(development, text, production)] |
| rails db:schema:load | スキーマファイルでデータベースを作成 | $ rails db:schema:load [RAILS_ENV=環境(development, text, production)] |
| rails db:schema:dump | 現在のデータベースからスキーマファイルを生成 | $ rails db:schema:dump [RAILS_ENV=環境(development, text, production)] |
| rails db:schema:cache:clear | db/schema_cache.ymlファイルをクリアします。 | $ rails db:schema:cache:clear |
| rails db:schema:cache:dump | db/schema_cache.ymlファイルを作成 | $ rails db:schema:cache:dump |
| rails db:seed | データベースに初期データを投入 | $ rails db:seed |
| rails db:seed:replant | 現在の環境の各データベースのテーブルを切り捨てseedをロード | $ rails db:seed:replant |
| rails db:prepare | データベースが存在しない場合はセットアップを実行し、存在する場合はマイグレーションを実行 | $ rails db:prepare |
| rails db:reset | 現在の環境に合わせてすべてのデータベースをスキーマから落として再作成しseedデータをロード | $ rails db:reset |
| rails db:rollback | スキーマを前のバージョンにロールバック | $ rails db:rollback |
| rails db:setup | すべてのデータベースを作成し、すべてのスキーマをロードしseedデータで初期化 | $ rails db:setup |
| rails db:structure:dump | データベース構造をダンプ | $ rails db:structure:dump [SCHEMA=ダンプするファイルパス(db/my_structure.sql)] |
| rails db:structure:load | structure.sqlファイルからデータベースを再構築 | $ rails db:structure:load |
| rails db:system:change | 使用するデータベースを変更 | $ rails db:system:change [--to=使用するデータベース] |
補足事項:
-
rails db:migrateコマンドの実行は、schema_migrationsテーブルを調べ、存在しない場合は作成し、db/migrateディレクトリ内のマイグレーションファイルをデータベースに適用、最後にschema_migrationsテーブルを更新するという流れで行われます。 -
rails dbconsoleコマンドには、環境を指定する-eオプションや、パスワードを自動的に付与する--include-passwordオプションなどがあります。また、開発環境、テスト環境、本番環境のいずれかを指定できます。
まとめ
いかがでしたでしょうか? rails db:prepare などはRails6から導入されていたようですが知りませんでした...
きちんとリファレンスを追うのって大事ですね。
Discussion