環境
- Windows7 Professional SP1 のパソコン
- Ruby 2.4.2 をインストール済み
- ローカルで Rails アプリケーションを動作
ちなみに Ruby 2.4.2 はインストーラで入れました。
https://rubyinstaller.org/downloads/
事象
前述の環境で Ruby の 2.5.1 をインストールしてから bundle install を実行した際にこんなエラーが出ました。インストールは 2.4.2 のときと同様にインストーラで行いました。
$ bundle install
Your Ruby version is 2.4.2, but your Gemfile specified 2.5.1
ちなみに ruby -v ではちゃんと 2.5.1 が出る状態にも関わらずです。
$ ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x64-mingw32]
bundle も2.5のbinから実行されています。
$ which bundle
/c/Ruby25-x64/bin/bundle
bundle のバージョンは 1.16.4 です。
$ bundle -v
Bundler version 1.16.4
対処
ruby 2.5 のインストーラ実行時、パスも通してくれるのですがユーザー環境変数のPATHが以下のようになっていました。
2.4 の環境変数も残っています。
C:\Ruby25-x64\bin;%JAVA_HOME%\bin;C:\Ruby24-x64\bin;...(省略)
この場合、左から処理され C:\Ruby25-x64\bin;
が採用されるはず(ruby -v
実行時は実際2.5.1が表示)なんですが、rubyのパスが2つあるのが気持ちわるかったので念のため2.4は削除して下記のようにしました。
%JAVA_HOME%\bin;C:\Ruby25-x64\bin;...(省略)
プロンプトを立ち上げなおして再度 bundle install を実行したら今度はうまくいきました。
$ bundle install
Fetching gem metadata from https://rubygems.org/..........
Fetching gem metadata from https://rubygems.org/..
(省略)
Bundle complete! 19 Gemfile dependencies, 80 gems now installed.
備考
- 別の端末で同じことをしてみたらそっちでは再現しなかったので、環境依存もありそうです。
- 調査のために環境変数の設定を戻しても再現できなくなっていました。
- そのため、根本的には別の原因があり、環境変数の設定を変えたことでたまたまそれが解消されてしまった可能性もありそうです。
まとめ
正直、何故これで解決できたのかまだ原因がはっきりと理屈で説明はできないのですが、あまり Windows での事例も見当たらなかったのでもし誰かがここを見かけた際に参考にしてもらえればと思って記事に残しました。
今後、もし何か新しいことがわかりましたらこの記事に追記、もしくは新しい記事に書いてこの記事へのリンクを貼るようにします。
ちなみに
エラーメッセージで検索した際にヒットしたのは rbenv の事例が多かったです。そもそも Windows で Rails の開発をしている人があまり多くないんでしょうね。Mac欲しい。