📝

rails: dbコマンドまとめ

に公開

普段 migratecreate とかしか使っていなかった 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