Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Trying to upgrade Rails

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for yotuba088 yotuba088
February 17, 2021

Trying to upgrade Rails

Trying to upgrade Rails
Railsバージョンアップをしてみて

【iCARE Dev Meetup #18】技術顧問が語る、Ruby on Rails実践開発
https://icare.connpass.com/event/201662/
でLTした資料です。

Avatar for yotuba088

yotuba088

February 17, 2021
Tweet

More Decks by yotuba088

Other Decks in Programming

Transcript

  1. ©iCARE Co., Ltd All rights reserved 株式会社iCARE:正社員・バックエンドエンジニア →主にRuby on Railsに関する開発やGraphQLを使用しています。

    →直近だとRailsバージョンアップ・公開APIのGraphQLでの開発 既存機能のGraphQL/Vue.jsリプレイスや新機能開発を行っています 207株式会社 :副業でお手伝いしてます →既存管理画面のGraphQL/React/TypeScriptのリプレイスを担当 文系大学卒業後、総合職で働いていましたが、プログラミングスクール に通った後、Ruby on Railsエンジニアを2年弱しております 自己紹介(2021年2月現在) 2
  2. ©iCARE Co., Ltd All rights reserved サービスのユーザーが増加
 機能開発をしなければいけない
 
 ↓


    
 バージョンアップが後回しになっていた
 gemのアップデートが3年ほどできていない
 
 ↓
 
 人員の増加・テストのカバレッジ向上
 技術顧問前島さんと協力してバージョンアップに取り組んだ
 
 
 
 
 iCAREの現状と取り組んだ内容 4
  3. ©iCARE Co., Ltd All rights reserved Railsのバージョンアップだけでは済まない
 gemのバージョンアップも必要
 
 ↓


    
 その度に人力でポチポチ、テストはできない
 Carelyだと150以上のgemを使っている
 
 ↓
 
 重要機能からランク分けして管理
 フィーチャースペックも必須
 管理画面側はテストが少なく人力で確認しないといけない
 
 
 テストの重要性とiCAREの課題 5
  4. ©iCARE Co., Ltd All rights reserved バージョンアップしても機能が増えるわけではない
 売り上げには繋がらない
 
 


    ↓
 
 
 
 安定的な稼働・バグを潰す・開発者のサポートを受ける為
 
 新しく入った機能やgemを使うことができない
 
 サービスの信用性や採用力も非常に落ちる
 
 
 
 なぜRailsのバージョンアップをしないといけないか? 6
  5. ©iCARE Co., Ltd All rights reserved 具体的にどう取り組んだか バージョンアップでの追加・変更を確認
 
 


    dependabotの導入
 
 
 バージョンアップしたブランチでCIを通す
 
 
 gemをアップデート
 
 
 テスト環境にデプロイして動作確認
 
 7
  6. ©iCARE Co., Ltd All rights reserved Railsガイドやコミットを確認
 
 
 


    
 
 
 
 
 
 
 
 Railsのバージョンアップによって動かなくなるコード 12
  7. ©iCARE Co., Ltd All rights reserved qiita書きました
 
 
 Railsバージョンアップ備忘録

    5.0→5.1編
 Railsバージョンアップ備忘録 5.1→5.2編
 
 
 今日は抜粋して難しかった点のみ
 
 
 
 
 
 
 
 
 Railsのバージョンアップによって動かなくなるコード 13
  8. ©iCARE Co., Ltd All rights reserved こちらのブログで紹介されているtrimのコードが
 内部APIを使っているため動かなくなる
 
 ↓


    
 内部に削除されたコードを移植
 
 
 
 
 
 
 
 Railsのバージョンアップによって動かなくなるコード(5.1) 14
  9. ©iCARE Co., Ltd All rights reserved 
 
 idがint型からbigint型に変更に
 


    混在してしまうとFOREIGN KEY制約が貼れなくなる
 
 ↓
 
 migrationファイルを[5.0]で作成しid型のまま維持
 
 (サービス的にBtBのためidの枯渇の恐れは少ない)
 
 
 
 
 
 Railsのバージョンアップによって動かなくなるコード(5.1) 15
  10. ©iCARE Co., Ltd All rights reserved 昨日リリースできました!
 
 ActiveModel::Dirtyのメソッドが変更
 


    参考・抜粋
 
 
 
 
 
 
 Railsのバージョンアップによって動かなくなるコード(5.2) 16
  11. ©iCARE Co., Ltd All rights reserved テストはとにかく大事
 
 書かないというのは後に変更する(書いた本人含)
 人間に変更する度に手作業で確認しろと言うようなもの


    リファクタリング・機能追加・バージョンアップ
 などコードが変更される機会は多い
 
 gemに詳しくなった
 
 不要なgemはいれない
 使わなくなったgemは削除
 メンテナンスされているgemを使う
 
 
 
 
 感想 17
  12. ©iCARE Co., Ltd All rights reserved Rails自体への興味が湧く→下記2冊もおすすめです
 
 
 


    
 
 
 
 
 
 
 
 
 今後のRailsがどうなるかはトリの前島さんのLTをお楽しみに
 
 終わりに 18