無謀にもシステムを Rails3 から Rails5 に移行完了した時のメモです。
アップデートは辞めて、新規作成でコードを確認しながら移行しました。
#ReadyForRailsで対応の確認
ここで、Rails5に移行可能かどうかと修正範囲を図る。
載っていないものは、githubで直接対応を調べる。
http://www.ready4rails.net/
#全体の流れ
- Gemfileの修正
- db/migrateを新規Railsへコピー
- モデルのコピーと変更
- config/routesのコピーと変更
- controllerの新規作成とactionのコピーと変更
- Viewのパーシャルの変更
- 設定ファイルの変更
- minitestへの書き換え
- 最後にturbolinks5の有効化
##Gemfileの修正
いらなくなったものが多いので、行づつ確認しながらのほうがいい。
##db/migrateのコピー
migrateの廃止内容は変わっていない。
##モデルのコピーと変更
###cancanをcancancanに変更
認可にcancanを使っていたので、対応版に変更、コードに変更なし。
###モデルからattr_accessibleの削除
モデル責務から開放する。
Rails3を使っていると、バリデーションとパラメーターのホワイトリストがごっちゃになって混乱しやすいので辞める。
###モデルのベースクラス名の変更
ActiveRecordからApplicationRecordに変更する。
###正規表現の¥^ $から¥A¥zに変更
セキュリティ上、変更すべき。
Scopeのラムダを変更
ラムダのみ許容するようになった。
http://qiita.com/tbpgr/items/0b621854900c132d8a42
conditionsの削除
conditionsは廃止が多いので、whereとメソッドチェインの組み合わせに変更する。
StrongParametersの導入
コントローラーは、scaffold_controllerを使って新規作成して変更する方がいい。
コントローラーは、大きく変更されるので、今後も舵きりに専念させるほうがいい。
Viewのパーシャルの変更
パーシャルレンダリングをcollectionを使うように変更する。
N+1 partial renderingの項目
rspecからminitestへ移行
今後の恩恵を受けるためにも移行しきってしまったほうがいい。
設定ファイルの変更
secret_key_baseの設定変更
行を確認しながら修正する。
#最後にturbolinks5の有効化
おそらくturbolinksを初期処理で無効化しているでしょう。
(Turbolinks3を趣味を超えて導入しているところを私は見たことがない。)
turbolink5はモバイルにも対応していて、使ってみたところ邪魔もしなかった。