Rails

【Railsエラー】rails newでバージョン指定しても、それ以上のバージョンが入ってしまう場合の対処法

Rails

 

今回は、新たにRailsを立ち上げる際に打ち込むコマンド「例, rails _5.2.3_ new」でバージョンを指定しても、それ以上のバージョンが入ってしまう場合の対処法について解説したいと思います。

最初の段階でつまずくと焦るよね〜

エラー内容

新しくRailsアプリ(SampleApp)を立ち上げようと思い、

$ rails _5.2.3_ new SampleApp -d mysql

 

のコマンドを打ち込んだものの、なぜか「Rails 5.2.4.1」がインストールされてしまいます。

「Rails 5.2.3」が適用されません。

エラー原因

結論から言うと、原因はGemfileにあります。

「rails new」を実行すると自動的にGemfileも読み込まれるため、Gemfileに記載されているRailsのバージョンが適用されてしまいます。

 

今回、新たに作成したアプリのGemfileを見てみましょう。

source 'https://rubygems.org'
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby '2.5.1'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '~> 5.2.3'

# 以下略

 

「gem ‘rails’, ‘~> 5.2.3’」に着目してください。

この記述を見ると、「バージョンが5.2.3以上のものをインストールしますね〜」と書いてあります。

ここが原因でした。

解決方法

まずは、Gemfileを読み込まずに「rails new」します。(以下コマンド)

$ rails _5.2.3_ new SampleApp -d mysql --skip-bundle

 

 

次にGemfileを以下のように編集して、railsのバージョンの指定を「5.2.3以上」から「5.2.3のみ」にします。

変更前) gem 'rails', '~> 5.2.3'
変更後) gem 'rails', '= 5.2.3'

 

 

最後に、再び「bundle install」を実行すれば完了です。

まとめ

  • 指定したバージョンが入らない時の原因はGemfileにある
  • Railsのバージョン指定が、5.2.3以上のようになっている
  • –skip-bundleを用いて、Gemfileを読み込まないように「rails new」する

 

 

今回は、「rails new」でバージョン指定しても、それ以上のバージョンが入ってしまう場合の対処法について解説しました。

「Railsのバージョン指定がうまくいかない〜」といった時は、Gemfileに着目してみてくださいね。