LoginSignup
14
14

More than 5 years have passed since last update.

Rails 5へのアップグレードでやったこと。

Last updated at Posted at 2016-09-26
1 / 14

(社内LT用の資料としてざっとまとめました。)
質問とかあればコメントでお願いします。


概要

Rails4.2 => Rails5.0 へのアップグレード頑張った。


やったこと

  • アップグレード用のブランチを用意
  • Rubyを2.2以上にする。
  • bundle update rails が完了できるまで頑張る。
  • Rails5標準の実装に変更する。(Rails5 アップグレードガイドとリリースノートを見つつ)
  • テストが実行できるまで、gem を update したり、パッチ当てたり頑張る。
  • 落ちてるテストをひたすら修正する。
  • deprecation warning を出している gem をアップデート
  • rails s で モンキーテストする。

アップグレード用のブランチを用意

間違ってもmasterにアップデートコミットを積まないように。


Ruby2.2 以上にアップデートする。

rbenv で 2.3.1 に切り替える。
Gemfileでrubyディレクティブを使ってバージョンを指定するのがおすすめ。

ruby '2.3.1'

bundle update rails が完了できるまで頑張る。

Gemfile で gem 'rails', '5.0.0' に書き換えて、bundle update railsを実行。
バージョンの競合とかで色々、エラーになって進まないので、ひたすら、バージョンの整合性を整えつつ、update する gem を追加していく。


【例】

Bundler could not find compatible versions for gem "activerecord":
  In Gemfile:
    activerecord-session_store was resolved to 1.0.0, which depends on
      activerecord (< 5.1, >= 4.0)

    rails (= 5.0.0) was resolved to 5.0.0, which depends on
      activerecord (= 5.0.0)

    seed-fu was resolved to 2.3.5, which depends on
      activerecord (< 4.3, >= 3.1)

上記の例だと、seed_fu が activerecord の5.0.0以上のものを利用しているバージョンまで update する必要がある。

最終的に以下のupdateを行った。

bundle update rails act-fluent-logger-rails i18n_generators inherited_resources sass-rails seed-fu default_value_for jquery-rails sinatra

Rails5標準の実装に変更する。 (Rails5 アップグレードガイドとリリースノートを見つつ)

rake rails:update

でアップデートする。
競合するconfig内ファイルはdiffを見て、上書きするかどうか決める。
別ディレクトリに rails new で作成したファイルと比較するのも良い。

後は Rails5 アップグレードガイドリリースノート を見つつ、必要に応じて、ファイルを修正していく。


テストが実行できるまで、gem を update したり、パッチ当てたり頑張る。

テストが無事に実行できるまで、エラーになる gem を修正する。
gem の updateにあたっては以下の手順で対応のバージョン、またはリビジョンを探す。

  1. githubの対応ブランチを探す。
  2. issueやpull reqの状況を確認する
  3. forkする or 捨てる

詳しくは 参考URL を参照すること。


落ちてるテストをひたすら修正する。

頑張れ、超頑張れ!!


deprecation warning を出している gem をアップデート

deprecation warning がなくなるまで、該当箇所を修正したり、gemをアップデートする。
gemのアップデート手順は bundle update のやり方と同じ。


rails s で モンキーテストする。

テストコードが整備されていないようなところは手動でテスト


参考まで

14
14
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
14
14