rails のバージョンアップする(5.0 -> 5.2)
概要
とある学習コンテンツを使用してrailsについて学習し、一通り終了したところでrailsをバージョンアップしてみた。
いろいろと修正すべきところがあったのでそれについて残してみる。
railsはDockerコンテナ上に立っているため使用したコマンドをすべてDocker経由のもの。
railsサーバのローカルでコマンドを使用する場合はdocker-compose *** web
を排除すれば使用できると思われる。(未検証)
環境
Docker for Windows 上の railsコンテナ
アップデート実行
Gemfileを更新する
- gem 'rails', '~> 5.0.0', '>= 5.0.0.1' + gem 'rails', '5.2.0'
railsをアップデートする
docker-compose run web bundle update rails
Dockerイメージのリビルド
docker-compose build
バージョン差分修正
version5.2より削除された設定の削除
config/initializers/new_framework_default.rb
から該当箇所を削除- ActiveSupport.halt_callback_chains_on_return_false = false + # ActiveSupport.halt_callback_chains_on_return_false = false
form_with
ヘルパーの実装form_with
ヘルパーの使用が推奨されているらしいので変更する 参考ページに従って編集 要約すると今まで用途によって使い分けていたform_for
ヘルパーとform_tag
ヘルパーのどちらにも対応したform_with
ヘルパーができましたよというお話。外部キー制約のデフォルト値の変更 version5.1からの変更だそうです。 参照元DBで生成される外部キー制約のデフォルトの型がint->bigintに変更になっています。以下のいずれかの対応が必要になる。
参照先DBのキーカラムのタイプをbigintにする
+ t.string :member_id, type: :bigint
参照元DBの外部キーのタイプをintにする
- t.references :member, foreign_key: true + t.references :member, foreign_key: true, type: :integer
redirect_to :back
廃止 前のページに戻るのに使用していたリダイレクト文ですが廃止されてしまったようです。- redirect_to :back + redirect_back(fallback_location: :me)
flash を使用していた場合は
- redirect_to :back, flash { - member: @member, - messages: @member.error.messages - } + redirect_back(fallback_location: new_member_path, flash: { + member: @member, + messages: @member.error.messages + }