LoginSignup
7
6

More than 5 years have passed since last update.

本番運用中のウェブサービスをRails4からRails5に移行する

Posted at

私が所属する会社で開発・運営しているウェブサービスはRails4.2系で動いていましたが、その中1つのサービスをRails4.2.6からRails5.0.0へとバージョンアップしましたので、その際に発生した問題とそこで得られた知見を今回の記事でお話ししようと思います。

移行の際にはこちらの記事を参考にさせていただきました。

gemのupdate

railsを5に上げる際に依存関係を解消するためにgemのバージョンを一気に最新にしましたが、rubygemsにrails5対応のバージョンが上がってなかったり、上がっていたとしても実行時にDEPRECATION WARNINGが出たりしていました。多くのgemは既にmasterではrails5やDEPRECATION WARNINGに対応した物が出ているので

gem ‘hogehoge’, github: ‘hogehoge’

といった形でgithubから直でmasterブランチの内容を引っ張ると解消できることが多かったです。以下が実際に今引っ張っているものです。

  • rails-perftest
  • activemodel-serializers-xml
  • sinatra
  • ransack
  • gretel
  • enumerize
  • heroku-deflater

Rails5の書き方に合わせる

DEPRECATION WARNINGやエラーが幾つか出るので、古い書き方から新しい書き方へ直します。

  • paramsをpermitしてからurlに変換する
    • 最悪、unsafe_hでパラメータクラスからHashに変換できるが余りよろしくない
  • ActiveRecord::Baseから継承せずにApplicationRecordというabstractクラスを作ってそれを継承する
  • merge! -> mergeに変更
  • error[‘hogehoge’] = ‘hoge’ -> error.add(‘hogehoge’, ‘hoge’)に変更
  • ActiveRecordのuniqをdistrunctに変更
  • destroy_all(condition) -> where(condition).destroy_allに変更

終わりに

この記事は自ブログからの転載となっています
もし良かったらブログもどうぞ
https://hackalive.net

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