はじめに
Docker を使用して Ruby on Rails アプリケーションを開発していると、よく遭遇するエラーの一つが「Ruby のバージョン不一致」に関する問題です。特に docker-compose up --build や bundle install の際に、Gemfile に指定された Ruby バージョンと Docker コンテナ内で実行されている Ruby バージョンが異なると、エラーが発生します。この記事では、このエラーを解決する方法をステップバイステップで解説します。
エラーの例
例えば、次のようなエラーメッセージが表示されることがあります
Your Ruby version is 3.2.8, but your Gemfile specified 3.4.3
このエラーメッセージが示しているのは、Gemfile に記載された Ruby バージョンが現在の環境と異なっている ということです。これを解決するためには、Ruby のバージョンを一致させる必要があります。
解決方法
1.Gemfile の Ruby バージョンを修正
まず最初に、Gemfile 内で指定している Ruby バージョンを、コンテナで使用しているバージョンに合わせる必要があります。エラーメッセージに ruby "3.2.8" とあった場合、Gemfile の内容を次のように変更します。
修正前:
ruby "3.4.3"
修正後:
ruby "3.2.8"
2.bundle install の実行
bundle install
3. Docker コンテナを再ビルド
docker-compose up --build
まとめ
このエラーは、Gemfile に記載された Ruby バージョンと Docker コンテナ内で実行される Ruby バージョンが異なることによって発生します。バージョンを一致させることで解決できるので、Gemfile を修正して、bundle install を再実行し、Docker コンテナを再ビルドすることで問題が解消されます。