Submit Search
Rails 6.1 → 7.0アップデート記録
0 likes
184 views
Maki Toshio
Omotesando.rb#87 LT資料
Software
Read more
1 of 19
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
More Related Content
PDF
目grep入門 +解説
murachue
PDF
0章 Linuxカーネルを読む前に最低限知っておくべきこと
mao999
PDF
闇魔術を触ってみた
Satoshi Sato
PDF
Native Memory Tracking
Takahiro YAMADA
PDF
組み込みでこそC++を使う10の理由
kikairoya
PPTX
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Preferred Networks
PDF
第14回 配信講義 計算科学技術特論A(2021)
RCCSRENKEI
PPTX
Tensor コアを使った PyTorch の高速化
Yusuke Fujimoto
目grep入門 +解説
murachue
0章 Linuxカーネルを読む前に最低限知っておくべきこと
mao999
闇魔術を触ってみた
Satoshi Sato
Native Memory Tracking
Takahiro YAMADA
組み込みでこそC++を使う10の理由
kikairoya
Deep Learningのための専用プロセッサ「MN-Core」の開発と活用(2022/10/19東大大学院「 融合情報学特別講義Ⅲ」)
Preferred Networks
第14回 配信講義 計算科学技術特論A(2021)
RCCSRENKEI
Tensor コアを使った PyTorch の高速化
Yusuke Fujimoto
What's hot
(20)
PDF
すごい constexpr たのしくレイトレ!
Genya Murakami
PDF
Googleの新しい検索技術 Knowledge Graphについて
maruyama097
PDF
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
Unity Technologies Japan K.K.
PPTX
最速C# 7.x
Yamamoto Reki
PDF
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
PDF
計算機アーキテクチャを考慮した高能率画像処理プログラミング
Norishige Fukushima
PDF
tcolorboxによる装飾表現(TeXユーザの集い2015)
TeXmedicine
PDF
明日使えないすごいビット演算
京大 マイコンクラブ
PDF
ログ解析を支えるNoSQLの技術
Drecom Co., Ltd.
PDF
TensorFlow Lite Delegateとは?
Mr. Vengineer
PDF
私にとってのテスト
Takuto Wada
PDF
【メタサーベイ】Video Transformer
cvpaper. challenge
PDF
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
Yoshifumi Kawai
PDF
中3女子でもわかる constexpr
Genya Murakami
PDF
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
Unity Technologies Japan K.K.
PPT
ジェネリクスの基礎とクラス設計への応用
nagise
PDF
Rust製の全文検索エンジンライブラリ(tantivy bayard)を試してみた
虎の穴 開発室
PDF
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
Genya Murakami
PDF
MCC CTF講習会 pwn編
hama7230
PDF
論文紹介:Temporal Action Segmentation: An Analysis of Modern Techniques
Toru Tamaki
すごい constexpr たのしくレイトレ!
Genya Murakami
Googleの新しい検索技術 Knowledge Graphについて
maruyama097
【Unity道場スペシャル 2017京都】最適化をする前に覚えておきたい技術
Unity Technologies Japan K.K.
最速C# 7.x
Yamamoto Reki
中3女子が狂える本当に気持ちのいい constexpr
Genya Murakami
計算機アーキテクチャを考慮した高能率画像処理プログラミング
Norishige Fukushima
tcolorboxによる装飾表現(TeXユーザの集い2015)
TeXmedicine
明日使えないすごいビット演算
京大 マイコンクラブ
ログ解析を支えるNoSQLの技術
Drecom Co., Ltd.
TensorFlow Lite Delegateとは?
Mr. Vengineer
私にとってのテスト
Takuto Wada
【メタサーベイ】Video Transformer
cvpaper. challenge
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
Yoshifumi Kawai
中3女子でもわかる constexpr
Genya Murakami
【Unity道場スペシャル 2017京都】スマホゲーム開発者なら知っておくべきチートのリスク&対策
Unity Technologies Japan K.K.
ジェネリクスの基礎とクラス設計への応用
nagise
Rust製の全文検索エンジンライブラリ(tantivy bayard)を試してみた
虎の穴 開発室
constexpr関数はコンパイル時処理。これはいい。実行時が霞んで見える。cpuの嬌声が聞こえてきそうだ
Genya Murakami
MCC CTF講習会 pwn編
hama7230
論文紹介:Temporal Action Segmentation: An Analysis of Modern Techniques
Toru Tamaki
Ad
Similar to Rails 6.1 → 7.0アップデート記録
(20)
PDF
Rubykansai 81
Satomi Tsujita
PDF
Rails解説セミナー: Railsのアップグレード編
Yohei Yasukawa
PDF
毎日gemをアップグレードする生活
sinsoku listy
PDF
食べログ流 - Rails Upgrade Practices
Kaito Minatoya
PDF
Rails解説セミナー: リリースノート解説編
Yohei Yasukawa
PDF
Rails3.1rc4を試してみた
Takahiro Hidaka
PDF
小規模個人アプリをRails 7.xにバージョンアップした話
Kazuhiro Nishiyama
PDF
Winodws7のruby2でrails4を遊ぶ環境を作るのだ。
Yukio Saito
PDF
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
DIVE INTO CODE Corp.
PDF
Railsの開発環境作るぞ
Yoichi Toyota
PPT
Ruby on Rails Tutorial Chapter8-10
Sea Mountain
PDF
Rails6にいつ上げるか?
sinsoku listy
PDF
成長を加速する minne の技術基盤戦略
Hiroshi SHIBATA
PPT
Ruby on Rails Tutorial Chapter5-7
Sea Mountain
PDF
nomlab_okayamaruby_slide
nomlab
PPT
Ruby on Rails3 Tutorial Chapter3
Sea Mountain
PDF
ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜
TrinityT _
PDF
Rails 7.1 の新機能が使いたくて調べてみた@【Techouse × Leaner共同開催】Ruby / Rails勉強会
Sho Ezawa
PDF
最適化計算エンジンを備えた Ruby on Rails アプリケーションのアーキテクチャーと進化
Masaki Takeuchi
PDF
How to upgrade your rails application to rspec3
Junichi Ito
Rubykansai 81
Satomi Tsujita
Rails解説セミナー: Railsのアップグレード編
Yohei Yasukawa
毎日gemをアップグレードする生活
sinsoku listy
食べログ流 - Rails Upgrade Practices
Kaito Minatoya
Rails解説セミナー: リリースノート解説編
Yohei Yasukawa
Rails3.1rc4を試してみた
Takahiro Hidaka
小規模個人アプリをRails 7.xにバージョンアップした話
Kazuhiro Nishiyama
Winodws7のruby2でrails4を遊ぶ環境を作るのだ。
Yukio Saito
【入門】3時間でアプリ公開!ゼロからのプログラミングRails講座
DIVE INTO CODE Corp.
Railsの開発環境作るぞ
Yoichi Toyota
Ruby on Rails Tutorial Chapter8-10
Sea Mountain
Rails6にいつ上げるか?
sinsoku listy
成長を加速する minne の技術基盤戦略
Hiroshi SHIBATA
Ruby on Rails Tutorial Chapter5-7
Sea Mountain
nomlab_okayamaruby_slide
nomlab
Ruby on Rails3 Tutorial Chapter3
Sea Mountain
ルビコンペレストロイカ〜RubyOnRailsにおけるCI改革〜
TrinityT _
Rails 7.1 の新機能が使いたくて調べてみた@【Techouse × Leaner共同開催】Ruby / Rails勉強会
Sho Ezawa
最適化計算エンジンを備えた Ruby on Rails アプリケーションのアーキテクチャーと進化
Masaki Takeuchi
How to upgrade your rails application to rspec3
Junichi Ito
Ad
More from Maki Toshio
(11)
PDF
自社サービスのAPIをOAuth2対応にして公開した
Maki Toshio
PDF
Searched gems which supports only ruby 2.6
Maki Toshio
PPTX
ActiveRecordで複雑なクエリを書くのは間違っているのか
Maki Toshio
PPTX
やさしいGemパッチの作り方
Maki Toshio
PPTX
ファイルシステムのスナップショット機能でバックアップを取得する
Maki Toshio
PPTX
Cloud Foundry Day in Tokyo Lightning Talk - Cloud Foundry over the Proxy
Maki Toshio
PDF
メール製品を作って気づいたmailライブラリの光と闇について語る
Maki Toshio
KEY
明日から使える(?)Rubyトリビア
Maki Toshio
ZIP
Rubyで簡単にremote access apiを実行する
Maki Toshio
ZIP
レガシーコード改善ガイド
Maki Toshio
PPT
Ruby on rails on hudsonの活用事例
Maki Toshio
自社サービスのAPIをOAuth2対応にして公開した
Maki Toshio
Searched gems which supports only ruby 2.6
Maki Toshio
ActiveRecordで複雑なクエリを書くのは間違っているのか
Maki Toshio
やさしいGemパッチの作り方
Maki Toshio
ファイルシステムのスナップショット機能でバックアップを取得する
Maki Toshio
Cloud Foundry Day in Tokyo Lightning Talk - Cloud Foundry over the Proxy
Maki Toshio
メール製品を作って気づいたmailライブラリの光と闇について語る
Maki Toshio
明日から使える(?)Rubyトリビア
Maki Toshio
Rubyで簡単にremote access apiを実行する
Maki Toshio
レガシーコード改善ガイド
Maki Toshio
Ruby on rails on hudsonの活用事例
Maki Toshio
Rails 6.1 → 7.0アップデート記録
1.
Rails6.1 → Rails7.0アップデート記録 Omotesando.rb#87
Toshio Maki(@Kirika̲K2)
2.
自己紹介 • Toshio Maki(@Kirika̲K2) •
RubyとRailsは15年ぐらいやってます。
3.
本日のテーマ • LTネタが集まらなかったときのために、1,2日でできそうな手頃 なテーマとしてRailsのバージョンアップを選びました。 • Railsバージョンアップはドメイン関係ないし、全員共通の課題なの で、LTが不足しているなと思ったら、みんなRailsのバージョンアッ プをしてLTをしましょう。
4.
Rails 6.1.7.4 →
Rails 7.0.5 +----------------------+--------+--------+---------+---------+-----+-------+ | Name | Lines | LOC | Classes | Methods | M/C | LOC/M | +----------------------+--------+--------+---------+---------+-----+-------+ | Controllers | 5970 | 5495 | 87 | 352 | 4 | 13 | | Jobs | 2865 | 2360 | 51 | 137 | 2 | 15 | | Models | 29882 | 21384 | 252 | 960 | 3 | 20 | | Mailers | 4 | 4 | 1 | 0 | 0 | 0 | | Channels | 8 | 8 | 2 | 0 | 0 | 0 | | Views | 14 | 13 | 0 | 0 | 0 | 0 | | Libraries | 10707 | 9095 | 171 | 386 | 2 | 21 | | Interactor specs | 64431 | 58409 | 0 | 4 | 0 | 14600 | | Job specs | 1293 | 1139 | 0 | 0 | 0 | 0 | | Lib specs | 1519 | 1424 | 0 | 0 | 0 | 0 | | Model specs | 47952 | 43255 | 0 | 11 | 0 | 3930 | | Request specs | 26393 | 22205 | 0 | 0 | 0 | 0 | +----------------------+--------+--------+---------+---------+-----+-------+ | Total | 218750 | 187765 | 564 | 1850 | 3 | 99 | +----------------------+--------+--------+---------+---------+-----+-------+ Code LOC: 38359 Test LOC: 149406 Code to Test Ratio: 1:3.9 • 本体コード38k、テストコードは150kのプロ ジェクト • Rubyのバージョンは3.1.3 • テストは割と書いている方(書けてないところ もあるにはある) • DependabotでGemの最新化を日々実施してい て、Gemは大体最新になっている • APIアクセスが殆どで、ViewはActiveJobを経由 した帳票作成機能以外なし
5.
Railsアップグレードガイドに従って上げていく • https://railsguides.jp/upgrading̲ruby̲on̲rails.html • Gem fi leのRailsのバージョンを6.1から7.0に変更して、bundle
updateする • bin/rails app:updateを実行 • 生成されたRails7.0用パラメータを見ながら、取り込み可否判断をする • アップグレード用のDBマイグレーションを実行する • あとはCIに雑に投げて、落ちたテストを全て直す
6.
bin/rails app:update • Rails7用のapplication.rb、development.rb
/ test.rb / production.rbや、その他必要なファイルを更新してくれる • 既存ファイルが存在する場合はOverwriteするかどうかを聞いてく るので、gitに履歴は全部残っているので、一旦全部上書きを選択し た
7.
ここでの罠 • production.rbのActiveStorageの保存先サービス名をドサクサに 紛れてローカルに変更されていた(これで2、3時間ぐらい浪費し た)
8.
credencial.yml.encの削除 • 元々はsecret̲key̲baseを保存しておくための、暗号化されたファイル • master.keyと対になっていて、master.keyはgitで管理してはいけない。 •
環境変数SECRET̲KEY̲BASEで代用できるため、credential.yml.encは使 用しておらず、master.keyもなかったが、Railsのattr̲encryptedのための キー情報も管理されるようになったため、ファイルが存在すると問答無用で 開きに行こうとする。 • Master.keyはすでに存在しておらず、起動時にエラーになるため、ファイル ごと削除した。
9.
application.rbのパラメータ見直し • default̲loads 7.0をセットすることで、Rails7.0のデフォルト値を 使用する。 •
bin/rails app:updateを実行して、default̲loads 6.1+Rails7で増 えたパラメータとの差分を検証したあと、default̲loads 7.0に変更 する
10.
Rails7で増えたパラメータへの対処 • 基本的に全部Rails7.0のデフォルトに寄せた • セッションCookieやEtagに使用するハッシュアルゴリズムが SHA1→SHA256に変更される影響が気になったが、セッション Cookieは使用していなかったし、Etagも再キャッシュし直せばよ さそうなので、デフォルトに寄せた
11.
雑にCIに投げた結果 • ここからはCIのテスト結果を見ながら1件1件対処していく
12.
各種Gemのアップデート • activerecord̲json̲schemaがRails7になったことで、1.3.0 → 2.1.5にアップデート •
文字列を渡すとJSONそのものが渡されたと解釈されてしまうた め、Pathnameを渡すように変更する(to̲sを取るだけ)
13.
String#to̲s(:currency)を String#to̲fs(:currency)に変更する • 123456789.to̲s(:currency) => “$123,456,789.00" •
Rails 6.1から警告が出ていたらしく、Rails7.0で使用できなくな り、代わりにto̲fs(:currency)でアクセスする。 • :phone、:percentage、:rounded、:human̲size、:humanなど、 to̲sに引数を取るものは全て対象となる
14.
あとは実機上でテスト • 一通り試してみて、動くことを確認したのでレビューしてもらって マージ。 • あとはQA環境でテストして、来週リリースです。
15.
まとめ • 昔はすごく大変な印象もあったが、Gemの最新化やテストを足し続 けたこともあり、Rails 6.1
→ Rails 7.0の移行は約2日でできた。
16.
おまけ • Rails 7.0化が思ったより早くできたので、Ruby
3.1.3 → Rails 3.2.2にもチャレンジしてみました…が
19.
Ruby 3.1.3 →
Ruby 3.2.3 • YJITを有効化 • Rubyのアップデートに伴う修正は特になし • まだ本番環境に入れてないので効果は分からないが、CIでのテスト 時間が16分18秒 → 13分50秒に短縮(16%短縮) • アップデートにかかった時間は1時間程度 • 所感「YJITすげー」
Download