rails new
を実行したときにインストールしているRailsの最新バージョンでアプリが作成されず、どハマりしたので投稿します。
はじめに
バージョンを指定せずにrails new
すると、インストールしているRailsの最新バージョンでアプリが作成されます。
が、私が遭遇したのはrails new
すると最新版ではなく、古いバージョンでアプリが作成されるという現象でした。しかもそのバージョンはgem list
コマンドでも表示されないバージョンでした。。
問題の原因
先に原因を書くと、環境変数の設定に問題がありました。
/usr/local/bin
が/Users/user_name/.rbenv/shims
より先に定義されており、$PATH
は先に書いたほうが優先されるため、/usr/local/bin/rails
が使われたことが原因でした。
つまり、rbenvで管理されているRailsのバージョンではなく、macにインストールされているRailsが参照されていました。
$ echo $PATH
/usr/local/bin:(中略)/Users/user_name/.rbenv/shims:/Users/user_name/.rbenv/bin:
(以下略)
問題発生から解決までの流れ
起きたこと
新規のアプリを作成しようとしてrails new
コマンドをバージョン指定無しで実行したところ、インストールしている最新バージョン(6.0.3)ではなく、古いバージョン(5.2.3)で作成されました。
source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby '2.3.7'
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.2.3'
(以下略)
Railsのバージョンを確認したところ5.2.3になっていたのですが、gem list
コマンドで確認したバージョンには5.2.3は含まれていませんでした。
$ rails -v
Rails 5.2.3
which rails
でRailsの実行場所を確認すると、/usr/local/bin/rails
になっていました。こうなっていた原因は上に書いたとおり、環境変数でrbenvのパスより先に/usr/local/bin/rails
が定義されていたためです。
$ which rails
/usr/local/bin/rails
蓋を開けてみると単純な問題だったのですが、一度gemをすべてアンインストールしたりと無駄なこともしてしまったので、同じ問題で困った方の助けになれば幸いです。
他に原因として考えられること
rails -v
で存在しないはずのRailsのバージョンが表示されるときは、railtiesも疑わしい場合があるようです。
Railsのバージョンがなんかおかしい時はrailtiesをチェック - かなりすごいブログ