[Ruby on Rails 5] Rails 5.0 -> 5.1 -> 5.2, Ruby 2.5 -> 2.6 へアプリをマイナーアップグレードする
つづきです。
Contents
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.load_defaults 5.1
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.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 の見直し。