Rails

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

Rails

 

新規アプリケーションを作成する際、% rails _5.2.3_ newのようにバージョン指定をしても、それ以上のバージョンがインストールされてしまう場合の対処方法について解説したいと思います。

結論、%rails new時に--skip-bundleを指定しましょう。

エラー概要

Railsバージョン5.2.3で新規アプリケーションを立ち上げるため、以下のコマンドを打ち込みますが、なぜか5.2.4.1のバージョンがインストールされてしまいます。

% rails _5.2.3_ new SampleApp -d mysql

% rails -v
=> 5.2.4.1

エラー原因

こういった現象が起きてしまう原因はGemfileにあります。

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

今回、新たに作成したアプリケーションのgemfileの中身を見てみましょう。

# 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以上のバージョンをインストールしますということを示しています。

この記述が原因となり、今回では5.2.4.1がインストールされていました。

解決方法

まずは--skip-bundleを指定し、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を実行すれば完了です。

% bundle install

% rails -v
=> 5.2.3

まとめ

  • 指定したバージョンが入らない場合の原因はgemfileにある
  • --skip-bundleを指定し、gemfileを読み込まないように% rails newを実行する

参考

新しいRailsのアプリケーションを作成

 

 

今回は新規アプリケーションを作成する際、% rails _5.2.3_ newのようにバージョン指定をしても、それ以上のバージョンがインストールされてしまう場合の対処方法について解説しました。Railsのバージョン指定がうまくいかないとなった場合は、Gemfileに着目してみてください。