Rails開発コマンド早見表:bundle / rake / rails の使い分けまとめ
はじめに
Railsを開発していると bundle exec rake db:migrate、rails db:migrate、bin/rails など似たようなコマンドがたくさん出てきます。この記事ではそれぞれの使い分けと、よく使うコマンドをカテゴリ別にまとめます。
bundle exec・bin/・rails の使い分け
bundle exec
Gemfileで管理されたgemのバージョンでコマンドを実行します。
bundle exec rails server bundle exec rake db:migrate bundle exec rspec
グローバルにインストールされたgemではなく、プロジェクト固有のバージョンが使われます。Railsプロジェクトでは基本的に bundle exec を付けるのが安全です。
bin/(binstub)
bin/rails、bin/rake などはプロジェクトに最初から用意されているショートカットです。bundle exec と同じ効果があり、入力が短くなります。
bin/rails server # bundle exec rails server と同じ bin/rake db:migrate # bundle exec rake db:migrate と同じ
rake と rails の違い(Rails 5以降)
Rails 5以降、多くのrakeタスクが rails コマンドでも実行できるようになりました。どちらを使っても同じ結果になります。
# どちらでも同じ rake db:migrate rails db:migrate rake routes rails routes rake test rails test
新しいプロジェクトでは rails コマンドに統一するのがシンプルです。
bundle コマンド早見表
| コマンド | 説明 |
|---|---|
bundle install |
Gemfileのgemをインストールする |
bundle update |
すべてのgemを最新に更新する |
bundle update <gem名> |
特定のgemだけ更新する |
bundle exec <コマンド> |
Gemfileのバージョンでコマンドを実行する |
bundle list |
インストール済みgemの一覧 |
bundle info <gem名> |
gemの詳細情報を表示する |
bundle outdated |
更新可能なgemを一覧表示する |
bundle clean |
不要なgemを削除する |
bundle binstubs <gem名> |
bin/ に実行ファイルを生成する |
bundle -v |
Bundlerのバージョンを確認する |
rails コマンド早見表
サーバー・コンソール
| コマンド | 説明 |
|---|---|
bin/rails server / bin/rails s |
開発サーバーを起動する |
bin/rails console / bin/rails c |
Railsコンソールを起動する |
bin/rails console --sandbox |
変更をロールバックするサンドボックスモード |
bin/rails dbconsole / bin/rails db |
DBのCLIを起動する |
ジェネレーター
| コマンド | 説明 |
|---|---|
bin/rails generate model User name:string |
モデルを生成する |
bin/rails generate controller Users index |
コントローラーを生成する |
bin/rails generate migration AddEmailToUsers email:string |
マイグレーションを生成する |
bin/rails generate scaffold Post title:string body:text |
スキャフォールドを生成する |
bin/rails destroy model User |
生成したファイルを削除する |
bin/rails g |
generate の短縮形 |
bin/rails d |
destroy の短縮形 |
データベース
| コマンド | 説明 |
|---|---|
bin/rails db:create |
DBを作成する |
bin/rails db:drop |
DBを削除する |
bin/rails db:migrate |
マイグレーションを実行する |
bin/rails db:migrate:status |
マイグレーションの適用状況を確認する |
bin/rails db:rollback |
直前のマイグレーションを戻す |
bin/rails db:rollback STEP=3 |
3つ前に戻す |
bin/rails db:seed |
db/seeds.rb を実行する |
bin/rails db:reset |
DB削除→作成→migrate→seedを一括実行 |
bin/rails db:schema:load |
schema.rb からDBを構築する |
bin/rails db:version |
現在のマイグレーションバージョンを確認する |
ルーティング・アセット
| コマンド | 説明 |
|---|---|
bin/rails routes |
ルーティング一覧を表示する |
bin/rails routes -g user |
"user" を含むルートだけ表示する |
bin/rails assets:precompile |
アセットをプリコンパイルする |
bin/rails assets:clean |
プリコンパイル済みアセットを削除する |
テスト
| コマンド | 説明 |
|---|---|
bin/rails test |
すべてのテストを実行する |
bin/rails test test/models/user_test.rb |
特定のテストを実行する |
bin/rails test:models |
モデルのテストだけ実行する |
bin/rails test:system |
システムテストを実行する |
bin/rspec |
RSpecを実行する(rspec-rails導入時) |
その他
| コマンド | 説明 |
|---|---|
bin/rails runner "User.count" |
Railsの文脈でコードを実行する |
bin/rails about |
Railsや依存ライブラリのバージョン情報を表示する |
bin/rails middleware |
ミドルウェアの一覧を表示する |
bin/rails stats |
コードの行数統計を表示する |
bin/rails log:clear |
ログファイルを削除する |
bin/rails tmp:clear |
tmp/ 以下のファイルを削除する |
rake コマンド早見表
Rails 5以降は rails に統合されていますが、rake でも実行できます。独自Rakeタスクは引き続き rake または bin/rake で実行します。
| コマンド | 説明 |
|---|---|
bin/rake -T |
定義済みタスクの一覧を表示する |
bin/rake -T db |
"db" を含むタスクだけ表示する |
bin/rake <namespace>:<task> |
カスタムタスクを実行する |
よく使う組み合わせパターン
# 開発環境の初期セットアップ bundle install bin/rails db:create db:migrate db:seed # DB変更後の手順 bin/rails generate migration AddAgeToUsers age:integer bin/rails db:migrate # マイグレーションを失敗したときに戻す bin/rails db:rollback # マイグレーションファイルを修正して再実行 bin/rails db:migrate # スキーマをリセットしてシードを再投入 bin/rails db:reset # カスタムRakeタスクの確認と実行 bin/rake -T bin/rake maintenance:cleanup
まとめ
bundle execかbin/を付けることで、プロジェクト固有のgemバージョンで実行できる- Rails 5以降は
rakeの多くがrailsコマンドに統合された - 独自のRakeタスクは引き続き
bin/rakeで実行する bin/rails -Tやbin/rake -Tでタスク一覧を確認できる
gemのバージョン管理は「Bundler入門:Gemfile・bundle install・bundle execの使い方まとめ」を参照してください。
Rakeタスクの作成方法は「Rake入門:Rakefileの書き方からRailsでのカスタムタスク作成まで」を参照してください。
コードスタイルの自動チェックは「RuboCop導入入門:インストールから設定・git commit時の自動実行まで」を参照してください。