rails new <アプリ名>
で新しいRailsのアプリケーションを作成すると、インストール済みのRialsの中の最新のバージョンが使用されます。
Railsのバージョンが新しいすぎる場合、アプリケーションの中で使用しているgemのパッケージが対応しておらず使用できない場合があります。
ここではそんなときに、ダウングレードした昔のバージョンでRialsアプリケーションを作成する方法についてまとめています。
現在インストールされているRailsのバージョンを確認する
まずは、「gem list rails」コマンドを使って、現在インストールされているRailsのバージョンを確認します。
$ gem list rails
実例
#現在インストール済みのバージョンを確認
$ gem list rails
*** LOCAL GEMS ***
bulma-rails (0.9.1)
rails (6.1.3)
rails-dom-testing (2.0.3)
rails-html-sanitizer (1.3.0)
sass-rails (6.0.0)
sassc-rails (2.1.2)
sprockets-rails (3.2.2)
この場合、「rails (6.1.3)」となっているので、インストールされているRailsのバージョンは「6.1.3」のみであることがわかります。
以下で、このRails「6.1.3」をRails「5.1.4」(5系の最新版)にダウングレードします。
Railsのバージョンを指定してインストールする
ダウングレードしたいRailsのバージョンがインストールされていない場合は、別途インストールする必要があります。
$ gem install -v <バージョン> rails
実例
Railsの「5.2.4」をインストールする場合は以下のようになります。
#5系のインストール
$ gem install -v 5.2.4 rails
実行後に、再度「gem list rails」を実行して、インストール済みのパッケージを確認します。
$ gem list rails
*** LOCAL GEMS ***
bulma-rails (0.9.1)
rails (6.1.3, 5.2.4.5)
rails-dom-testing (2.0.3)
rails-html-sanitizer (1.3.0)
sass-rails (6.0.0)
sassc-rails (2.1.2)
sprockets-rails (3.2.2)
すると、rails (6.1.3, 5.2.4.5)と表示され、もともとの「6.1.3」に加えて、「5.3.4.5」が追加されたことがわかります。
バージョンを指定してRailsアプリケーションを作成する
バージョンを指定してRailsアプリケーションを作成するには以下のコマンドを実行します。
$ rails _バージョン_ new <プロジェクト名>
実例
バージョン「5.2.4」のRailsを使って、「rails-demo」という名前のアプリケーションを作成する場合は以下のようになります。
#アプリの作成
$ rails _5.2.4_ new rails-demo
#サーバー起動
$ cd rails-demo
$ rails s
エラーが出る場合の対処法
rails s
を実行したときに以下のようなエラーが発生することがあります。
/Users//.rvm/gems/ruby-2.7.0/gems/msgpack-1.4.2/lib/msgpack.rb:8:in `require': incompatible library version - /Users//.rvm/gems/ruby-2.7.0/gems/msgpack-1.4.2/lib/msgpack/msgpack.bundle (LoadError)
これは、現在のパッケージがダウングレードしたRailsのバージョンと互換性がないために発生するエラーです。
対処法は、以下を実行して、パッケージをインストールしなおします。
$ bundle install --path vendor/bundle
これで、このプロジェクト用にダウングレードしたgemのダウンロードが完了します。
サーバーを起動します。
$ rails s
URLにアクセスすると、Railsが正しく起動していることがわかります。
バージョンも「5.2.4.5」というダウングレードしたものになっています。