LoginSignup
0
1

More than 5 years have passed since last update.

今更ながらそもそもRailsのバージョンが違う件。

Posted at

前回の投稿でちらっと自分の環境が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に移されたとのことです。
<手順>
1. app/modelsにapplication_record.rbファイルを作成。
2. 以下を記述
class ApplicationRecord < ActiveRecord::Base
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

まとめ

今回は早く勉強を進めるためこんな感じでアップデートしましたが、ちゃんと運用中のままでできるようにならないと実践では使えませんねσ(^_^;)

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1