RubyとRailsのバージョン確認方法:gem・bundler・rbenv・miseコマンド一覧
はじめに
Rubyプロジェクトを始めるとき、既存のプロジェクトに参加するとき、エラーが起きたとき、まず確認するのがRubyとRailsのバージョンです。
この記事では ruby、rails、gem、bundler のバージョン確認コマンドをまとめて解説します。
Rubyのバージョンを確認する
ruby -v # または ruby --version
ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [arm64-darwin23]
Railsのバージョンを確認する
グローバルにインストールされたRailsを確認する
rails -v # または rails --version
Rails 7.1.3
プロジェクトで使われているRailsを確認する
bundle exec rails -v
bundle exec を使うとグローバルではなく、そのプロジェクトの Gemfile.lock に記載されたバージョンで実行します。プロジェクト内では bundle exec rails を使うのが基本です。
gemのバージョンを確認する
gem はRubyのパッケージ管理コマンドです。
gem -v # または gem --version
3.5.3
特定のgemがインストールされているか確認する
gem list rails
rails (7.1.3, 7.0.8)
複数バージョンがインストールされている場合はすべて表示されます。
bundlerのバージョンを確認する
bundlerはプロジェクトごとにgemのバージョンを管理するツールです。
bundle -v # または bundler -v
Bundler version 2.5.3
プロジェクトで使われているgemのバージョンを確認する
bundle list
Gemfile.lock に記載された全gemとバージョンが表示されます。特定のgemだけ確認したい場合は以下のようにgrepと組み合わせます。
bundle list | grep rails
* rails (7.1.3)
グローバルとプロジェクトの優先順位
rails コマンドを実行したとき、グローバルとプロジェクトのどちらが使われるかは状況によって異なります。
| 実行方法 | 使われるrails |
|---|---|
rails |
グローバル |
bundle exec rails |
プロジェクトのGemfile.lockに従う |
プロジェクト内では必ず bundle exec rails を使うことで、環境の違いによるバージョン不一致を防げます。
.ruby-versionでプロジェクトのRubyバージョンを確認する
プロジェクトのルートに .ruby-version ファイルがある場合、そこに使用するRubyバージョンが記載されています。
cat .ruby-version
3.3.0
rbenvやmiseなどのバージョン管理ツールを使っている場合、このファイルを元に自動でRubyバージョンが切り替わります。
バージョンが食い違うときのトラブルシューティング
rails -v と bundle exec rails -v の結果が違う
グローバルとプロジェクトで別バージョンのRailsが入っています。プロジェクト内では bundle exec rails を使うことで解決します。
ruby: command not found が出る
Rubyがインストールされていないか、PATHが通っていません。rbenvやmiseでインストールした場合はシェルの設定ファイルにパスが追加されているか確認してください。
echo $PATH
bundle: command not found が出る
bundlerがインストールされていません。以下でインストールできます。
gem install bundler
まとめ
| 確認したいもの | コマンド |
|---|---|
| Rubyのバージョン | ruby -v |
| Railsのバージョン(グローバル) | rails -v |
| Railsのバージョン(プロジェクト) | bundle exec rails -v |
| gemのバージョン | gem -v |
| bundlerのバージョン | bundle -v |
| プロジェクトの特定gem | bundle list | grep gem名 |
- プロジェクト内では
bundle exec railsを使うとバージョン不一致を防げる .ruby-versionファイルでプロジェクトが要求するRubyバージョンを確認できる- Rubyのバージョン管理には rbenv・mise が便利(→「Rubyのバージョン管理:rbenv・miseの使い方と切り替え方法」で解説)