2016年7月22日金曜日

【Rails5.0.0】 rails4.2.5からrails5.0.0にアップグレードする その1 Gemと設定ファイルの修正

記事概要

rails4.2.5からrails5.0.0にアップグレードした時の方法をまとめた記事です。

環境

  • centos6.5
  • rails4.2.5 → rails5.0.0
  • ruby2.3.0
  • rbenv
  • unicorn
  • capistrano3.2.1 → capistrano3.5.0
  • whenever

工数

全ての修正を含めて1日で完了しました。

作業内容

rails5.0.0のアップグレードでは、以下の作業を行いました。

  • rails5.0.0へアップデート
  • アプリのコード修正
  • Rspecの修正
  • capistranoの修正

移行用のbranchの作成

gitでrails5移行用の機能ブランチを作成します。

terminal

cd {project_folder}
git branch feature-rails5

checkoutでブランチを切り替えます。

terminal

git branch feature-rails5

準備完了です。

Gemfile修正

まずGemfileを修正します。

{project_folder}/Gemfile

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '4.2.5'

↓

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
gem 'rails', '5.0.0'

gem 'rails', '5.0.0'に修正し、updateします。

terminal

// update
bundle update rails

railsの変更だけの場合、私の環境では更新に失敗しました。
以下のようなエラーが表示されました。

terminal

Bundler could not find compatible versions for gem "railties":
  In Gemfile:
    coffee-rails (~> 4.1.0) was resolved to 4.1.1, which depends on
      railties (< 5.1.x, >= 4.0.0)

    factory_girl_rails (>= 4.1.0) was resolved to 4.6.0, which depends on
      railties (>= 3.0.0)

    jquery-rails was resolved to 4.1.0, which depends on
      railties (>= 4.2.0)

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

    rails-i18n (~> 4.0.0) was resolved to 4.0.8, which depends on
      railties (~> 4.0)

    rspec-rails was resolved to 3.4.2, which depends on
      railties (< 4.3, >= 3.0)

    sass-rails (~> 5.0) was resolved to 5.0.4, which depends on
      railties (< 5.0, >= 4.0.0)

    teaspoon was resolved to 1.1.5, which depends on
      railties (< 6, >= 3.2.5)

    web-console (~> 2.0) was resolved to 2.3.0, which depends on
      railties (>= 4.0)


Bundler could not find compatible versionsは依存関係のエラーです。
更新が必要なGemを順に切り替えていきます。

{project_folder}/Gemfile

gem 'coffee-rails', '~> 4.1.0'

↓

gem 'coffee-rails', '~> 4.2.1'

{project_folder}/Gemfile

gem "factory_girl_rails", ">= 4.1.0"

↓

gem "factory_girl_rails", ">= 4.7.0"

{project_folder}/Gemfile

gem 'rails-i18n', '~> 4.0.0'

↓

gem 'rails-i18n', '~> 5.0.0'

{project_folder}/Gemfile

gem 'sass-rails', '~> 5.0'

↓

gem 'sass-rails', '~> 5.0.5'

再度updateします。

terminal

bundle update 

bundle updateは、全ての依存関係をインストール・ダウンロードし直すことができます。

terminal

Bundle updated!

すべてのgemの更新に成功したら、updateの準備は完了です。

Upgrade to Rails 5.0.0

Gemファイルの導入が完了したら、rails app:updateで設定ファイルを更新します。

terminal

bundle exec rails app:update

ファイル更新の有無を聞かれるので、更新が必要なファイルのみ変更します。

  • config/boot.rb → 更新する
  • config/routes.rb → 更新しない
  • config/application.rb → 更新する
  • config/environment.rb → 更新する
  • secrets.yml → 更新しない
  • config/environments/development.rb → どちらでも良い(config.serve_static_filesを削除)
  • config/environments/production.rb → どちらでも良い(config.serve_static_filesを削除)
  • config/environments/test.rb → 更新しない
  • config/initializers/assets.rb → 更新しない
  • config/initializers/cookies_serializer.rb → 更新しない
  • config/initializers/wrap_parameters.rb → 更新しない
  • config/locales/en.yml → 更新しない
  • bin/rails → 更新する
  • bin/setup → 更新する

以上で完了です。

Rails5.0.0起動

設定ファイルの修正が終わったら、アプリを起動します。

terminal

rbenv exec bundle exec rails s -b 0.0.0.0
=> Booting WEBrick
=> Rails 5.0.0 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
[2016-07-15 16:52:59] INFO  WEBrick 1.3.1
[2016-07-15 16:52:59] INFO  ruby 2.3.0 (2015-12-25) [x86_64-linux]
[2016-07-15 16:52:59] INFO  WEBrick::HTTPServer#start: pid=21885 port=3000

コンソールにRails 5.0.0 applicationが表示され、画面が表示されれば成功です。

あとはWEBを動かしながらdepressionメッッセージをつぶしていきます。 今後非推奨となる処理は、コンソールにdepressionが表示されます。 そのままでも動作するのですが、5.1.0で動かなうなるので、治せる箇所は今のうちに修正しておきましょう。

まとめ

Rails3からRails4にアップデートするよりは、素早くアップグレードできます。
もちろん、導入しているライブラリ次第ですが、随分と洗練されたという印象です。

この記事の通り、本番でautoloadができなくなっているので、バッチを利用している人は注意してください。
次回は、rspecの修正方法について記述します。

以上です。

追伸:この記事が600本目の記事です。
今後もよろしくお願いします。

PICK UP オススメ書籍

運営サイト(railsで作成しています)


関連記事

この記事がお役にたちましたらシェアをお願いします

このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿

Related Posts Plugin for WordPress, Blogger...