前回の投稿でちらっと自分の環境がRails4.2.2だと書きました。
その時はparams
の削除だけで解決できましたが、今回チュートリアルの7.5「プロのデプロイ」まで行き、puma
を導入しなければならないとのことで完全に行き詰まりました。
4.2.2のままpuma
だけを導入するか。それともバージョンアップしてしまうか・・・悩みましたが、puma
導入に意外と手間取ったことと、どうせそもそも違うならとこの度バージョンアップを試みました。
恐らくこんな状態の人はいないと思いますが、念の為変更した点を書き記します。
バージョンアップの仕方
まずは当然作成中のディレクトリのままのバージョンアップを試みました。
しかし、そもそもPCにRails5はもちろんRuby2.2.2も入っていなかったです・・・
ということでそれらをインストールし、スマートなやり方ではないと思いましたが、rails5用のディレクトリを作成してこれまでのファイルをそこにコピーすることにしました。(元を変えて失敗したら怖かったので・・・)
それぞれのインストールにはこちらを参考にさせて頂きました。
http://qiita.com/gaku3601/items/5a484043f9c803ce9941
変更点
アプリのコードは変更というよりほとんど教材通りに直しただけです。
(Rails5前提で書かれてるのだから当たり前ですけど…)
<変えた部分>
1. Gemfile.lock。ここは丸ごと消してやり直しました。
2. Gemfile。ここもチュートリアルのやつを丸ごとコピペしました。
(ちなみに7章までの最終版のGemfileは、この章のリスト6.36が最後です。
https://railstutorial.jp/chapters/modeling_users?version=5.0#cha-modeling_users)
3. 前回自分で勝手に消したparamsを教材通りに戻す。
4. ActiveRecord::Base
を継承している部分をApplicationRecord
にする。
5. テストでDEPRECTION WARNING
が3つほど出たので警告に従い対処。
詳細
1. Gemfile.lock
Rails5導入に伴い、インストールしているgemもアプデートしなくてはならないのですが、こいつがあるとうまくいきません。
なので一度削除することにしました。
2. Gemfile
最新版とかは今のところ必要ないので、これはチュートリアルのものを丸々コピペしてbundle install
。
これでGemfile.lockも新しく作り直されました。
3. 自分で消したparams
これは前回の投稿で消したやつです。
http://qiita.com/maru_katy/items/76eebf872c3d927abbd8
Rails5からは明示的に記述するのが推奨されているとのことでしたので戻しました。
4. ApplicationRecord
Rails4.2以前はActiveRecord::Base
から継承されていたものが、Rails5からはApplicationRecord
に移されたとのことです。
<手順>
- app/modelsにapplication_record.rbファイルを作成。
- 以下を記述
self.abstract_class = true
end```
3. ソース内の`ActiveRecord::Base`の部分を`ApplicationRecord`に修正。
これはこちらを参考にさせていただきました。
https://railsguides.jp/upgrading_ruby_on_rails.html
http://qiita.com/ryohashimoto/items/09724ad4dddcda01bce3
### 5. テストで出る`DEPRECTION WARNING`
具体的にはconfig/environments/test.rbファイルで2つ。
`config.serve_static_files` -> `config.public_file_server.enabled = true`
`config.static_cache_control = 'public, max-age=3600'` ->`config.public_file_server.headers = { 'Cache-Control' => 'public, max-age=3600' }`
もう一つはアプリのソース外です。
これは4.2からだそうですが、隠しディレクトリの.rbenv以下のファイルにある
`raise_in_transactional_callbacks=(value)`
の設定を`true`にしました。
これらの詳しい説明はRailsのアップグレードガイドをご覧ください。
https://railsguides.jp/upgrading_ruby_on_rails.html
## まとめ
今回は早く勉強を進めるためこんな感じでアップデートしましたが、ちゃんと運用中のままでできるようにならないと実践では使えませんねσ(^_^;)