
前回の記事の続きで、既存サービスをRails5からRails6へバージョンアップについてです。
前回はこちら↓
この記事では、Gemfile再構成~rails serverコマンドで起動まで紹介します。
今回修正する既存のアプリの元のバージョン
・Ruby 2.4.4
・Rails 5.2.1
目次
Gemfileの再構成
ruby
前回の記事でRubyのバージョンを上げたので、変更します。
1 2 |
# ruby '2.4.4' ruby '2.5.7' |
rails
こちらも当然ですが6系に上げたので変更。
1 2 |
#gem 'rails', '~> 5.2.1' gem 'rails', '~> 6.0.1' |
sqlite3(使っている人対象)
私の環境ではsqlite3は、Rails6で対応しているバージョンがミスマッチ(?)してエラーを解消させることが出来ませんでした。
調べてみるとsqliteは1.3.6で安定、(Rails6では1.4が安定?)とあるのですが、どちらに変えてもエラーは解消しませんでした。
本番環境でmysqlを使っていたので、この際中々安定しないsqliteをやめてwindowsにmysqlを導入して対応することにしました。
mysqlを導入してwindowsローカル環境で利用する方法についてはまた別の記事で紹介したいと思います。
webpacker
Railsのjavascriptコンパイラとして、webpackerがデフォルトとなりました。
webpackerは、webpackをRailsで利用するために作られたGemです。
webpack導入時に本来設定すべき設定を、Rails側で用意し比較的簡単に導入することが出来るのが特徴です。
Railsガイドによると、使いたい場合のみの対応でよさそうなため、webpackerを使用していない既存サービスは今回のアップグレードで無理に使用しなくてもよさそうです。
このwebpackerを利用するには、webpackを利用するための環境作成を行う必要があります。
ですがその前に、webpackを利用するにはnode.jsとyarnをそれぞれインストールしておく必要があります。
① node.jsのインストール
node.js入っているか確認する場合は、コマンドプロンプトに 「node –version」と入力して実行します。
バージョンが表示されればインストール済みです。
PCに入れていない場合はこちらの公式サイトからインストールします。
最新のLTSをダウンロードします。
インストーラを起動したら、全部デフォルトで進めてインストールします。
② yarnのインストール
「yarn」はnode.jsのパッケージマネージャーで、npmの上位版(的な存在らしい)で、npmコマンドを使用する場面は全てyarnコマンドで代用して行っていきます。
こちらのサイトからyarnをダウンロードし、インストーラーを起動します。
こちらのインストーラーも全てデフォルトでOKです(たしか)
インストールが完了したら、コマンドプロンプトで「yarn -v」を実行してみましょう。
③ webpackerのインストール
Gemfileにwebpackerを追記します。
1 |
gem 'webpacker', github: 'rails/webpacker' |
最後にコマンドプロンプトで「rails webpacker:install」を実行します。
だだーっと必要なパッケージがインストールされて完了します。
ここまでさらっとwebpacker導入手順を紹介しましたが、うまくいかない場合はこちらの記事を確認してみてください。
Rails6 開発時につまづきそうな webpacker, yarn 関係のエラーと解決方法
Gemfile再構成
追加・更新を行ったのでコマンドプロンプトで「bundle install」を実行してgemを更新します。
もし、実行に失敗する場合はプロジェクト内の「Gemfile.lock」を削除してみてください。
Gemfile.lockはgemのバージョン管理を行うファイルでbundle install後に自動的に再作成されます。
【参考記事】
Ruby on Railsでbundle installでエラーが出た時のシンプルな解決方法
アップデートタスク
Railsガイドによると、「rails:updateというコマンドを実行すると、新しいバージョンでのファイル作成や既存ファイルの変更を対話形式で行うことができます。」と書いてあります。
必要なファイルを作成してくれるそうなので、「rails:update」を実行します。
windowsで実行すると、以下のようなエラーが出るかもしれません。
使用する文字コード設定の問題らしく、コマンドプロンプトで「set RUBYOPT=-EUTF-8」を実行してから再度「rails:update」を実行するとうまくいきました。
application.rbの更新
プロジェクトルート直下にある「application.rb」ファイルの中に「config.load_defaults 5.2」と書かれている部分を6.0にバージョンを修正します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
require_relative 'boot' require 'rails/all' # Require the gems listed in Gemfile, including any gems # you've limited to :test, :development, or :production. Bundler.require(*Rails.groups) module Hoge # ←プロジェクト名 class Application < Rails::Application # Initialize configuration defaults for originally generated Rails version. # config.load_defaults 5.2 config.load_defaults 6.0 # ←6.0に変更 # Settings in config/environments/* take precedence over those specified here. # Application configuration can go into files in config/initializers # -- all .rb files in that directory are automatically loaded after loading # the framework and any gems in your application. end end |
サーバーを起動してみる
ここまで設定が終えたら「rails server」で起動させてみましょう。