[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

同じように作業を繰り返していきます。

段取り毎に bin/rails spec 等のテストを実行して動作を確認します。

  • Gemfile のバージョンを rails 5.1.7 に変更し、bundle update rails を実行します。
  • bin/rails app:update でファイルを書き換えます。
  • 必要な Gem を 個別に bundle update します。
  • RailsDiff を見ながらファイルを書き換えます。

テストはパスしますが DEPRECATION WARNING が表示されているので、このタイミングで Rails.application.config を確認して行きます。

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 をディフォルトにします。

config/application.rb
config.load_defaults 5.1

config/initializers/new_framework_defaults.rb をチェックし、下記のみ残しました。

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

同じように作業を繰り返していきます。

段取り毎に bin/rails spec 等のテストを実行して動作を確認します。

  • Gemfile のバージョンを rails 5.2.4.1 に変更し、bundle update rails を実行します。
  • bin/rails app:update でファイルを書き換えます。
  • RailsDiff を見て bootsnap を追加し bundle install します。

ここまで進めたところ bin/rails spec でテストが実行されません(こちらで解決)。
bundle exec rspec を試すとテストが実行され、パスしていることを確認できました。

  • 必要な Gem を 個別に bundle update します。
  • RailsDiff を見ながらファイルを書き換えます。

config/application.rb で 5.2 をディフォルトにします。
config/initializers/new_framework_defaults_5_2.rb は全てコメントアウトされていました。

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 の見直し。