Ruby on Rails Tech Meetup
https://cw-meetup.doorkeeper.jp/events/52879
の発表資料です。
自己紹介
名前: 正徳 巧
会社: 株式会社grooves
職種: サーバーサイドエンジニア
github: sinsoku
twitter: @sinsoku_listy
Rails5 アップグレードの進捗どうですか?
アジェンダ
- アップグレード手順
- gem のアップグレード
- プルリクを出す
- RC で動かしてみる
- 5.0.0 のリリースまで
- 最速リリースを目指した理由
アップグレード手順
gem のアップグレード
- gem を最新にする
- rails5 対応のバージョンに上げる
- Rails guide を読んで対応
- 落ちたテストの修正
gem を最新にする
sanemat/tachikoma, sinsoku/tachikoma_ai で毎週アップデート
rails5 対応のバージョンに上げる
- beta, pre のバージョンがないか確認
- gem 'rspec', '>= 3.5.0.beta3' など
- master ブランチを確認する
- gem 'sinatra', github: 'sinatra/sinatra' など
- Pull Request で対応されていないか確認する
- fork されたリポジトリを使用する
- ソースコード読んで自分で直す
active_decorator-rspec
は自分で対応しました。
Rails guide を読んで対応
落ちたテストの修正
頑張る。
参考: http://tech.grooves.com/entry/2016/07/01/184458
プルリクを出す
プルリクを出す
rails5 ブランチを作って、対応を進めていきます。
Rails 4.2 の状態でも変更が可能なもの
s/ActiveRecord::Base/ApplicationRecord/
s/env/request.env/
-
alias_method_chain
をModule#prepend
に修正 - ...etc
4.2 で変更可能なコミット
cherry-pick
マージ
残りコミット
リベース
小さいプルリクの利点
- 各プルリクがレビューしやすい
- コンフリクトを避けられる
- 業務の合間に少しずつ進められる
RC で動かしてみる
弊社で Rails5 対応を始めたのは 4月の beta3 から
rc1 で動作確認が完了
業務の合間に少しずつ対応を進め、 5月末に staging で一通りの機能の動作確認が完了してしまった。
社内で相談
- 大きな変更が少ない
- API モード未使用
- ActionCable 未使用
- puma 未使用
- rails にヤバそうな issue がなかった
- 変な事が起きたらバージョン戻そう
マージしちゃった
RCで1ヶ月の間、問題なく稼働
5月末〜7月1日まで prodcution で RC が動いていました。
or メソッドを使ったりしていました
5.0.0 のリリースまで
6/23: RC2 が出たら、すぐにアップグレード
6/24: 5.0-stable ブランチの監視
7/1(6:20): 5.0.0 のリリースを確認
7/1(10:30): RC2 → 5.0.0 で一部のテストが落ちる
7/1(16:20): Rails5 のアップグレード完了
最速リリースを目指した理由
その方が面白いから!
真面目な理由
- OSS に貢献できるチャンス
- 他の Rails エンジニアのアップグレードのため
- 会社のブランディング
- 採用、PV に繋がるかも?
まとめ
まとめ
- Rails5 は少しずつ対応できる
- 弊社の技術ブログをご活用ください
- OSS に貢献できるチャンス
- Rails6 は、会場の誰か頼む