[Ruby on Rails 5] Rails 5.0 -> 5.1 -> 5.2, Ruby 2.5 -> 2.6 へアプリをマイナーアップグレードする
つづきです。
## Rails 5.0.7.2 -> 5.1.7
– Rails 5.0.7.2 -> 5.1.7
同じように作業を繰り返していきます。
> – [Rails アップグレードガイド – Railsガイド](https://railsguides.jp/upgrading_ruby_on_rails.html#rails-5-0%E3%81%8B%E3%82%89rails-5-1%E3%81%B8%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89)
> – [Ruby on Rails 5.1 リリースノート – Railsガイド](https://railsguides.jp/5_1_release_notes.html)
> – [RailsDiff](http://railsdiff.org/5.0.7.2/5.1.7)
段取り毎に `bin/rails spec` 等のテストを実行して動作を確認します。
– Gemfile のバージョンを `rails 5.1.7` に変更し、`bundle update rails` を実行します。
– `bin/rails app:update` でファイルを書き換えます。
– 必要な Gem を 個別に `bundle update` します。
– RailsDiff を見ながらファイルを書き換えます。
テストはパスしますが DEPRECATION WARNING が表示されているので、このタイミングで `Rails.application.config` を確認して行きます。
> – [3.17 load_defaultsの結果](https://railsguides.jp/configuring.html#load-defaults%E3%81%AE%E7%B5%90%E6%9E%9C)
> – [config.load_defaultsとnew_framework_defaults_x_x.rbの関係を詳しく調べてみた – Qiita](https://qiita.com/jnchito/items/cce3b2795e1c66735310)
“`prettyprinted
DEPRECATION WARNING: ActiveSupport.halt_callback_chains_on_return_false= is deprecated and will be removed in Rails 5.2.
DEPRECATION WARNING: raise_on_unfiltered_parameters is deprecated and has no effect in Rails 5.1.
“`
`config/application.rb` で 5.1 をディフォルトにします。
“`ruby:config/application.rb
config.load_defaults 5.1
“`
`config/initializers/new_framework_defaults.rb` をチェックし、下記のみ残しました。
“`ruby:config/initializers/new_framework_defaults.rb
Rails.application.config.active_record.belongs_to_required_by_default = false
“`
`config/initializers/new_framework_defaults_5_1.rb` をチェックし、ファイルを削除します。
再度テストと動作確認を行い、終了です。
## Rails 5.1.7 -> 5.2.4.1
– Rails 5.1.7 -> 5.2.4.1
同じように作業を繰り返していきます。
> – [Rails アップグレードガイド – Railsガイド](https://railsguides.jp/upgrading_ruby_on_rails.html#rails-5-1%E3%81%8B%E3%82%89rails-5-2%E3%81%B8%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89)
> – [Ruby on Rails 5.2 リリースノート – Railsガイド](https://railsguides.jp/5_2_release_notes.html)
> – [RailsDiff](http://railsdiff.org/5.1.7/5.2.4.1)
段取り毎に `bin/rails spec` 等のテストを実行して動作を確認します。
– Gemfile のバージョンを `rails 5.2.4.1` に変更し、`bundle update rails` を実行します。
– `bin/rails app:update` でファイルを書き換えます。
– RailsDiff を見て `bootsnap` を追加し `bundle install` します。
ここまで進めたところ `bin/rails spec` でテストが実行されません([こちらで解決](https://www.d-wood.com/blog/2020/02/18_11783.html))。
`bundle exec rspec` を試すとテストが実行され、パスしていることを確認できました。
– 必要な Gem を 個別に `bundle update` します。
– RailsDiff を見ながらファイルを書き換えます。
`config/application.rb` で 5.2 をディフォルトにします。
`config/initializers/new_framework_defaults_5_2.rb` は全てコメントアウトされていました。
“`ruby:config/application.rb
config.load_defaults 5.2
“`
再度テストと動作確認を行い、終了です。
## Ruby 2.5.7 -> 2.6.5
– Ruby 2.5.7 -> 2.6.5
bundler のバージョンが古かったので `gem install bundler` でアップグレードします。
`Gemfile` と `.ruby-version` の値を書き換え `bundle install` します。
再度テストと動作確認を行い、終了です。
## 今後の課題
おいおい新しい仕組みにあわせた書き換えや乗り換えなど検討していきたいところです。
– `active_record.belongs_to_required_by_default` の扱い。
– `form_with` 書き換え。
– `config/secrets.yml` の扱い。
– gem の見直し。
> – [[Rails 5] rails newで常に使いたい厳選・定番gemリスト(2017-2018年版)|TechRacho(テックラッチョ)〜エンジニアの「?」を「!」に〜|BPS株式会社](https://techracho.bpsinc.jp/hachi8833/2017_02_16/32827)