こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在4社経験している、10年目エンジニアです。
この記事では、 Ruby on Railsでrakeコマンドを実行したところ
GemLoadError You have already activated rake 〇.〇.〇, but your Gemfile requires rake ×.×.×.
というエラーメッセージが表示されたときの原因と解決方法をお伝えします。
症状と原因
私はデータベースを新規作成する
1 |
rake db:create |
を実行したときにおこりました。
以下が内容です。
GemLoadError You have already activated rake 13.0.3, but your Gemfile requires rake 13.0.1. Prepending
bundle exec
to your command may solve this.
エラーが起こった原因は、エラーメッセージにも書かれている通りバージョンが異なるからです。
今回ではrakeコマンドのバージョンは13.0.3であるものの、Gemfileでは13.0.1が指定されていたため発生しました。
このエラー問題を解決する方法を2つお伝えします。
解決策その1:コマンドの頭に「bundle exec」を付ける
エラーメッセージにも記載されていますが、解決策その1はコマンドの頭に「bundle exec」を付けることです。
1 |
bundle exec rake db:create |
というようにコマンドを指定する、という感じです。
「bundle exec」を頭につけることによって、Gemfileの方のバージョンで動くため無事実行できる、というわけです。
ただこれはバージョンが異なっているというそもそもの問題を解決していない一時しのぎな手法であることに注意です。
解決策その2:最新バージョンにアップデートする
解決策その2は、最新バージョンにアップデートすることです。
こちらは解決策その1と異なり、根本のバージョン違いを解消できるので、もしバージョン管理ができている状態ならば、こちらをおすすめします。
1 |
bundle update |
と実行してアップデートコマンドを実行します。
最新化が終わった後
1 |
rake db:create |
を実行したところ、無事データベースを新規作成できていることが確認できました!
まとめ:エラーが出ても落ち着いて、対処しよう
以上がRuby on Railsでrakeコマンドを実行したとき
GemLoadError You have already activated rake 〇.〇.〇, but your Gemfile requires rake ×.×.×.
というエラーメッセージが表示されたときの原因と解決策でした!
あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ
コメント