記事概要
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移行用の機能ブランチを作成します。
cd {project_folder}
git branch feature-rails5
checkoutでブランチを切り替えます。
git branch feature-rails5
準備完了です。
Gemfile修正
まず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します。
// update
bundle update rails
railsの変更だけの場合、私の環境では更新に失敗しました。
以下のようなエラーが表示されました。
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を順に切り替えていきます。
gem 'coffee-rails', '~> 4.1.0'
↓
gem 'coffee-rails', '~> 4.2.1'
gem "factory_girl_rails", ">= 4.1.0"
↓
gem "factory_girl_rails", ">= 4.7.0"
gem 'rails-i18n', '~> 4.0.0'
↓
gem 'rails-i18n', '~> 5.0.0'
gem 'sass-rails', '~> 5.0'
↓
gem 'sass-rails', '~> 5.0.5'
再度updateします。
bundle update
bundle updateは、全ての依存関係をインストール・ダウンロードし直すことができます。
Bundle updated!
すべてのgemの更新に成功したら、updateの準備は完了です。
Upgrade to Rails 5.0.0
Gemファイルの導入が完了したら、rails app:updateで設定ファイルを更新します。
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起動
設定ファイルの修正が終わったら、アプリを起動します。
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 オススメ書籍
Paolo Perrotta オライリージャパン 2015-10-10
運営サイト(railsで作成しています)
関連記事
この記事がお役にたちましたらシェアをお願いします