事象
昔作ったRailsアプリを久しぶりに修正しデプロイしようとしたところ、以下のエラーが出力されました。
# 実行コマンド
Running $HOME/.rbenv/bin/rbenv exec bundle exec rake assets:precompile
# エラー内容
bundler: failed to load command: rake (/var/www/app/shared/bundle/ruby/2.6.0/bin/rake)
Gem::Exception: can't find executable rake for gem rake. rake is not currently included in the bundle, perhaps you meant to add it to your Gemfile?
bundler:コマンドのロードに失敗しました:rake(/var/www/app/shared/bundle/ruby/2.6.0/bin/rake)
Gem::Exception: gem rakeの実行可能rakeが見つかりません。 rakeは現在バンドルに含まれていません。おそらく、Gemfileに追加するつもりでしたか?
原因
本番環境にインストールされているRubyGemsのバージョンが古かったためです。
# RubyGemsのバージョン確認
$ gem -v
昔作ったRailsアプリだったので本番環境にインストールされているRubyGemsのバージョンも当時のまま止まっていました。具体的には、RubyGemsのバージョンが3.1.3未満だとBundlerの実行時(bundle exec
)にエラーとなります。
対処
本番環境で以下のコマンドを実行し、RubyGemsを最新バージョンにします。
$ gem update --system
RubyGemsのバージョンが3.1.3以上になっていればOKです。
$ gem -v
3.2.17