Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Ruby、一緒に成長しよう! ~アップグレード奮闘記 ~ Hashino Mikiko
Slide 2
Slide 2 text
アジェンダ - Findy Team+ 開発組織 - Rubyアップグレード手順 概要 - 実際 アップグレード - 遭遇した課題と解決方法 - さいごに
Slide 3
Slide 3 text
Hashino Mikiko / みっきー ファインディ株式会社 2024年7月入社 Findy Team+ バックエンド開発 shibuya.rb / TechBull 3月に初ランニングイベントに出場 : @mikiko_bridge
Slide 4
Slide 4 text
開発組織体制 - アップグレード担当するチームがある わけで ない - 事業KPIごとに分けてチーム作成 参照: エンジニア向け 会社紹介資料より(2月版)
Slide 5
Slide 5 text
開発組織体制 - Dependabotでアップグレードを検知 - issueを立てておく - やりたい人が自分でissueにアサイン
Slide 6
Slide 6 text
アップグレード手順 1. リリースノートを読む 2. 対応箇所 洗い出しを行う 3. 2. で洗い出したも を対応する 4. アップグレード PR作成 5. CIが通ること 確認 6. CI 修正 7. ステージング環境に反映し、動作を確認 8. リリース
Slide 7
Slide 7 text
1. リリースノートを読む - it 追加 - パーサー 変更 https://www.ruby-lang.org/ja/news/2024/12/25/ruby-3-4-0-released/
Slide 8
Slide 8 text
アップグレード手順 1. リリースノートを読む 2. 対応箇所 洗い出しを行う 3. 2. で洗い出したも を対応する 4. アップグレード PR作成 5. 自動CIが通ること 確認 6. 自動CI 修正 7. ステージング環境に反映し、動作を確認 8. リリース
Slide 9
Slide 9 text
2. 対応箇所 洗い出しを行う - 非推奨 確認 - 新機能で使うも があれ 別issueにして対応
Slide 10
Slide 10 text
2. 対応箇所 洗い出しを行う - 非推奨 確認 - 新機能で使うも があれ 別issueにして対応 3. 今回、特別対応するところ なさそう
Slide 11
Slide 11 text
アップグレード手順 1. リリースノートを読む 2. 対応箇所 洗い出しを行う 3. 2. で洗い出したも を対応する 4. アップグレード PR作成 5. CIが通ること 確認 6. CI 修正 7. ステージング環境に反映し、動作を確認 8. リリース
Slide 12
Slide 12 text
4. PR作成
Slide 13
Slide 13 text
アップグレード手順 1. リリースノートを読む 2. 対応箇所 洗い出しを行う 3. 2. で洗い出したも を対応する 4. アップグレード PR作成 5. CIが通ること 確認 6. CI 修正 7. ステージング環境に反映し、動作を確認 8. リリース
Slide 14
Slide 14 text
5. CIが通ること 確認 CIでチェックしているも Rubocop Brakeman RSpec
Slide 15
Slide 15 text
5. CIが通ること 確認 - RSpec ❌ - RSpec 起動時点でエラーが起きていた - Rubocop ✅ - Brakeman ✅
Slide 16
Slide 16 text
アップグレード手順 1. リリースノートを読む 2. 対応箇所 洗い出しを行う 3. 2. で洗い出したも を対応する 4. アップグレード PR作成 5. CIが通ること 確認 6. CI 修正 7. ステージング環境に反映し、動作を確認 8. リリース
Slide 17
Slide 17 text
6. CI 修正 2つ 問題
Slide 18
Slide 18 text
1つ目: Datadog gem 原因 - datadog gemが1系で、Ruby3.4系に対応していなかった 解決法 - datadog gemを2系にアップグレードした
Slide 19
Slide 19 text
RSpecが起動し、全て通る ず✅
Slide 20
Slide 20 text
6. CI 修正 - RSpec ❌😕 - Rubocop ✅ - Brakeman ✅
Slide 21
Slide 21 text
2つ目: Kernel#system
Slide 22
Slide 22 text
2つ目: Kernel#system 目標: - 再現コード を用意すること - issueを立てること
Slide 23
Slide 23 text
No content
Slide 24
Slide 24 text
No content
Slide 25
Slide 25 text
No content
Slide 26
Slide 26 text
No content
Slide 27
Slide 27 text
Ruby 3.4.1 結果 Ruby 3.3.6 結果
Slide 28
Slide 28 text
https://bugs.ruby-lang.org/issues/21125
Slide 29
Slide 29 text
No content
Slide 30
Slide 30 text
6. CI 修正 CI を通すため 解決法💡 delegateを使わず、 system メソッドを作成
Slide 31
Slide 31 text
6. CI 修正 - ✨RSpec ✅✨ - Rubocop ✅ - Brakeman ✅
Slide 32
Slide 32 text
アップグレード手順 1. リリースノートを読む 2. 対応箇所 洗い出しを行う 3. 2. で洗い出したも を対応する 4. アップグレード PR作成 5. CIがパスすること 確認 6. CI 修正 7. ステージング環境に反映し、動作を確認 8. リリース
Slide 33
Slide 33 text
7. 動作確認 ● ステージング環境に反映させる ● ハッピーパスで動作 確認をしていく ● バッチ処理が正常に動いていることを確認する
Slide 34
Slide 34 text
アップグレード手順 1. リリースノートを読む 2. 対応箇所 洗い出しを行う 3. 2. で洗い出したも を対応する 4. アップグレード PR作成 5. CIがパスすること 確認 6. CI 修正 7. ステージング環境に反映し、動作を確認 8. リリース
Slide 35
Slide 35 text
2025年1月30日 Ruby 3.4.1にアップグレード完了 🎉
Slide 36
Slide 36 text
さいごに - マイナーバージョンでも困ることがある - 機能開発で経験できないことが経験できるかも - 周りを頼ること がとても大切 - テストを堅牢 にしておいてよかった