LoginSignup
11
11

More than 5 years have passed since last update.

Upgrade Forkwell to Rails5 the faster 🎉

Posted at
1 / 45

Ruby on Rails Tech Meetup
https://cw-meetup.doorkeeper.jp/events/52879

の発表資料です。


自己紹介

名前: 正徳 巧
会社: 株式会社grooves
職種: サーバーサイドエンジニア
github: sinsoku
twitter: @sinsoku_listy


jobs.png


quick.png


Rails5 アップグレードの進捗どうですか?


:relieved:


アジェンダ

  • アップグレード手順
    • gem のアップグレード
    • プルリクを出す
    • RC で動かしてみる
  • 5.0.0 のリリースまで
  • 最速リリースを目指した理由

アップグレード手順


gem のアップグレード

  • gem を最新にする
  • rails5 対応のバージョンに上げる
  • Rails guide を読んで対応
  • 落ちたテストの修正

gem を最新にする

sanemat/tachikoma, sinsoku/tachikoma_ai で毎週アップデート

tachikoma_ai.png


rails5 対応のバージョンに上げる

  1. beta, pre のバージョンがないか確認
    • gem 'rspec', '>= 3.5.0.beta3' など
  2. master ブランチを確認する
    • gem 'sinatra', github: 'sinatra/sinatra' など
  3. Pull Request で対応されていないか確認する
    • fork されたリポジトリを使用する
  4. ソースコード読んで自分で直す

active_decorator-rspec は自分で対応しました。

active_decorator-rspec.png


Rails guide を読んで対応

guide.png


落ちたテストの修正

頑張る。

参考: http://tech.grooves.com/entry/2016/07/01/184458


プルリクを出す


プルリクを出す

rails5 ブランチを作って、対応を進めていきます。

rails5.png


Rails 4.2 の状態でも変更が可能なもの

  • s/ActiveRecord::Base/ApplicationRecord/
  • s/env/request.env/
  • alias_method_chainModule#prepend に修正
  • ...etc

4.2 で変更可能なコミット

rails5-1_mark.png


cherry-pick

rails5-1.png


マージ

rails5-1_merged.png


残りコミット

rails5-2_mark.png


リベース

rails5-2_rebased.png


rc1.png


小さいプルリクの利点

  • 各プルリクがレビューしやすい
  • コンフリクトを避けられる
  • 業務の合間に少しずつ進められる

RC で動かしてみる


弊社で Rails5 対応を始めたのは 4月の beta3 から

rc1_apr.png


rc1 で動作確認が完了

業務の合間に少しずつ対応を進め、 5月末に staging で一通りの機能の動作確認が完了してしまった。


社内で相談

  • 大きな変更が少ない
    • API モード未使用
    • ActionCable 未使用
    • puma 未使用
  • rails にヤバそうな issue がなかった
  • 変な事が起きたらバージョン戻そう

rc1_merged.png


マージしちゃった :laughing:


RCで1ヶ月の間、問題なく稼働

5月末〜7月1日まで prodcution で RC が動いていました。


or メソッドを使ったりしていました

or_method.png


5.0.0 のリリースまで


6/23: RC2 が出たら、すぐにアップグレード

rc2.png


6/24: 5.0-stable ブランチの監視

watch_5_0_stable.png


7/1(6:20): 5.0.0 のリリースを確認

5_0_0_release.png


7/1(10:30): RC2 → 5.0.0 で一部のテストが落ちる :ghost:

turbolinks_bomb.png


7/1(16:20): Rails5 のアップグレード完了 :shipit:

merged.png


最速リリースを目指した理由


その方が面白いから! :laughing:


真面目な理由

  • OSS に貢献できるチャンス
  • 他の Rails エンジニアのアップグレードのため
  • 会社のブランディング
    • 採用、PV に繋がるかも?

まとめ


まとめ

  • Rails5 は少しずつ対応できる
    • 弊社の技術ブログをご活用ください
  • OSS に貢献できるチャンス
  • Rails6 は、会場の誰か頼む

ご清聴ありがとうございます。

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