Submit Search
Upload
Rails 6.1 → 7.0アップデート記録
•
0 likes
•
140 views
Maki Toshio
Follow
Omotesando.rb#87 LT資料
Read less
Read more
Software
Report
Share
Report
Share
1 of 19
Download now
Download to read offline
Recommended
The Shift Left Path and OWASP
The Shift Left Path and OWASP
Riotaro OKADA
業務で使うIRC
業務で使うIRC
onozaty
私のファミコンのfpsは530000です。もちろんフルパワーで(以下略
私のファミコンのfpsは530000です。もちろんフルパワーで(以下略
Hiroki Nakahara
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化
Takuya ASADA
Linuxカーネルを読んで改めて知るプロセスとスレッドの違い
Linuxカーネルを読んで改めて知るプロセスとスレッドの違い
Retrieva inc.
Airflowを広告データのワークフローエンジンとして運用してみた話
Airflowを広告データのワークフローエンジンとして運用してみた話
Katsunori Kanda
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
Shigeru Hanada
Recommended
The Shift Left Path and OWASP
The Shift Left Path and OWASP
Riotaro OKADA
業務で使うIRC
業務で使うIRC
onozaty
私のファミコンのfpsは530000です。もちろんフルパワーで(以下略
私のファミコンのfpsは530000です。もちろんフルパワーで(以下略
Hiroki Nakahara
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
10GbE時代のネットワークI/O高速化
10GbE時代のネットワークI/O高速化
Takuya ASADA
Linuxカーネルを読んで改めて知るプロセスとスレッドの違い
Linuxカーネルを読んで改めて知るプロセスとスレッドの違い
Retrieva inc.
Airflowを広告データのワークフローエンジンとして運用してみた話
Airflowを広告データのワークフローエンジンとして運用してみた話
Katsunori Kanda
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
PostgreSQLのパラレル化に向けた取り組み@第30回(仮名)PostgreSQL勉強会
Shigeru Hanada
DNSキャッシュサーバ チューニングの勘所
DNSキャッシュサーバ チューニングの勘所
hdais
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
Juniper Networks (日本)
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
Yuki Miyatake
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
Masahiro Nagano
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
Yuta Shimada
CRC-32
CRC-32
7shi
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座
Samir Hammoudi
IL2CPPに関する軽い話
IL2CPPに関する軽い話
Wooram Yang
もし新人のインフラエンジニアがKPTで振り返りをしたら
もし新人のインフラエンジニアがKPTで振り返りをしたら
Yukitaka Ohmura
Dockerのディスクについて ~ファイルシステム・マウント方法など~
Dockerのディスクについて ~ファイルシステム・マウント方法など~
HommasSlide
Wowzaを用いた配信基盤 Takusuta tech conf01
Wowzaを用いた配信基盤 Takusuta tech conf01
Kazuhiro Ota
MQ入門
MQ入門
HIRA
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略
Takayuki Shimizukawa
JIRA / Confluence の必須プラグインはこれだ
JIRA / Confluence の必須プラグインはこれだ
Narichika Kajihara
Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知
Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知
daisuke-a-matsui
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
Koichiro Matsuoka
あなたの知らないnopたち@ラボユース合宿
あなたの知らないnopたち@ラボユース合宿
MITSUNARI Shigeo
ジャストシステムJava100本ノックのご紹介
ジャストシステムJava100本ノックのご紹介
JustSystems Corporation
Playgram開発秘話_2022年1月プログラミングシンポジウム招待講演_西澤勇輝、岡本雄太
Playgram開発秘話_2022年1月プログラミングシンポジウム招待講演_西澤勇輝、岡本雄太
Preferred Networks
Rubykansai 81
Rubykansai 81
Satomi Tsujita
DB tech showcase_tokyo2018_LOCONDO
DB tech showcase_tokyo2018_LOCONDO
Shinya Sugiyama
More Related Content
What's hot
DNSキャッシュサーバ チューニングの勘所
DNSキャッシュサーバ チューニングの勘所
hdais
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
Juniper Networks (日本)
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
Yuki Miyatake
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
Masahiro Nagano
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
Yuta Shimada
CRC-32
CRC-32
7shi
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
Atsushi Nakamura
超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座
Samir Hammoudi
IL2CPPに関する軽い話
IL2CPPに関する軽い話
Wooram Yang
もし新人のインフラエンジニアがKPTで振り返りをしたら
もし新人のインフラエンジニアがKPTで振り返りをしたら
Yukitaka Ohmura
Dockerのディスクについて ~ファイルシステム・マウント方法など~
Dockerのディスクについて ~ファイルシステム・マウント方法など~
HommasSlide
Wowzaを用いた配信基盤 Takusuta tech conf01
Wowzaを用いた配信基盤 Takusuta tech conf01
Kazuhiro Ota
MQ入門
MQ入門
HIRA
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略
Takayuki Shimizukawa
JIRA / Confluence の必須プラグインはこれだ
JIRA / Confluence の必須プラグインはこれだ
Narichika Kajihara
Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知
Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知
daisuke-a-matsui
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
Koichiro Matsuoka
あなたの知らないnopたち@ラボユース合宿
あなたの知らないnopたち@ラボユース合宿
MITSUNARI Shigeo
ジャストシステムJava100本ノックのご紹介
ジャストシステムJava100本ノックのご紹介
JustSystems Corporation
Playgram開発秘話_2022年1月プログラミングシンポジウム招待講演_西澤勇輝、岡本雄太
Playgram開発秘話_2022年1月プログラミングシンポジウム招待講演_西澤勇輝、岡本雄太
Preferred Networks
What's hot
(20)
DNSキャッシュサーバ チューニングの勘所
DNSキャッシュサーバ チューニングの勘所
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
【Interop Tokyo 2018】 Telemetryの匠が解説~オープン技術を用いたマイクロバースト検知の最前線~
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
ISUCON4 予選問題で(中略)、”my.cnf”に1行だけ足して予選通過ラインを突破するの術
コンテナにおけるパフォーマンス調査でハマった話
コンテナにおけるパフォーマンス調査でハマった話
CRC-32
CRC-32
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
「関心の分離」と「疎結合」 ソフトウェアアーキテクチャのひとかけら
超実践 Cloud Spanner 設計講座
超実践 Cloud Spanner 設計講座
IL2CPPに関する軽い話
IL2CPPに関する軽い話
もし新人のインフラエンジニアがKPTで振り返りをしたら
もし新人のインフラエンジニアがKPTで振り返りをしたら
Dockerのディスクについて ~ファイルシステム・マウント方法など~
Dockerのディスクについて ~ファイルシステム・マウント方法など~
Wowzaを用いた配信基盤 Takusuta tech conf01
Wowzaを用いた配信基盤 Takusuta tech conf01
MQ入門
MQ入門
Webアプリを並行開発する際のマイグレーション戦略
Webアプリを並行開発する際のマイグレーション戦略
JIRA / Confluence の必須プラグインはこれだ
JIRA / Confluence の必須プラグインはこれだ
Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知
Norikra + Fluentd+ Elasticsearch + Kibana リアルタイムストリーミング処理ログ集計による異常検知
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
PostgreSQLの行レベルセキュリティと SpringAOPでマルチテナントの ユーザー間情報漏洩を防止する (JJUG CCC 2021 Spring)
あなたの知らないnopたち@ラボユース合宿
あなたの知らないnopたち@ラボユース合宿
ジャストシステムJava100本ノックのご紹介
ジャストシステムJava100本ノックのご紹介
Playgram開発秘話_2022年1月プログラミングシンポジウム招待講演_西澤勇輝、岡本雄太
Playgram開発秘話_2022年1月プログラミングシンポジウム招待講演_西澤勇輝、岡本雄太
Similar to Rails 6.1 → 7.0アップデート記録
Rubykansai 81
Rubykansai 81
Satomi Tsujita
DB tech showcase_tokyo2018_LOCONDO
DB tech showcase_tokyo2018_LOCONDO
Shinya Sugiyama
ふくよかなモデル
ふくよかなモデル
yukaina
MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)
yoyamasaki
Agile Software Development with Edge Ruby
Agile Software Development with Edge Ruby
Koichi ITO
MySQL 入門的なはなし
MySQL 入門的なはなし
Yuya Takeyama
L2 over L3 ecnaspsulations
L2 over L3 ecnaspsulations
Motonori Shindo
http2 最速実装 v2
http2 最速実装 v2
Yoshihiro Iwanaga
VagrantとChefで開発スピードを上げる話
VagrantとChefで開発スピードを上げる話
Koji Nakamura
Amalgam8 application switch for cloud native services
Amalgam8 application switch for cloud native services
Takehiko Amano
#dnstudy 01 ドメイン名の歴史
#dnstudy 01 ドメイン名の歴史
Takashi Takizawa
ヤフーのRDBと最新のMySQLの検証結果#yjdsw3
ヤフーのRDBと最新のMySQLの検証結果#yjdsw3
Yahoo!デベロッパーネットワーク
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
Hideki Saito
VMware NSXがサポートするトンネル方式について
VMware NSXがサポートするトンネル方式について
Motonori Shindo
20160929 inno db_fts_jp
20160929 inno db_fts_jp
yoyamasaki
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎
schoowebcampus
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
onozaty
Similar to Rails 6.1 → 7.0アップデート記録
(17)
Rubykansai 81
Rubykansai 81
DB tech showcase_tokyo2018_LOCONDO
DB tech showcase_tokyo2018_LOCONDO
ふくよかなモデル
ふくよかなモデル
MySQL 5.7 InnoDB 日本語全文検索(その2)
MySQL 5.7 InnoDB 日本語全文検索(その2)
Agile Software Development with Edge Ruby
Agile Software Development with Edge Ruby
MySQL 入門的なはなし
MySQL 入門的なはなし
L2 over L3 ecnaspsulations
L2 over L3 ecnaspsulations
http2 最速実装 v2
http2 最速実装 v2
VagrantとChefで開発スピードを上げる話
VagrantとChefで開発スピードを上げる話
Amalgam8 application switch for cloud native services
Amalgam8 application switch for cloud native services
#dnstudy 01 ドメイン名の歴史
#dnstudy 01 ドメイン名の歴史
ヤフーのRDBと最新のMySQLの検証結果#yjdsw3
ヤフーのRDBと最新のMySQLの検証結果#yjdsw3
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
沖縄オープンラボラトリ OpenStackハンズオンセミナー午後1
VMware NSXがサポートするトンネル方式について
VMware NSXがサポートするトンネル方式について
20160929 inno db_fts_jp
20160929 inno db_fts_jp
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎
増井雄一郎の「wri.pe」を事例に学ぶ、自作サービスの作り方〜開発編 先生:増井 雄一郎
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
今からでも遅くないDBマイグレーション - Flyway と SchemaSpy の紹介 -
More from Maki Toshio
自社サービスのAPIをOAuth2対応にして公開した
自社サービスのAPIをOAuth2対応にして公開した
Maki Toshio
Searched gems which supports only ruby 2.6
Searched gems which supports only ruby 2.6
Maki Toshio
ActiveRecordで複雑なクエリを書くのは間違っているのか
ActiveRecordで複雑なクエリを書くのは間違っているのか
Maki Toshio
やさしいGemパッチの作り方
やさしいGemパッチの作り方
Maki Toshio
ファイルシステムのスナップショット機能でバックアップを取得する
ファイルシステムのスナップショット機能でバックアップを取得する
Maki Toshio
Cloud Foundry Day in Tokyo Lightning Talk - Cloud Foundry over the Proxy
Cloud Foundry Day in Tokyo Lightning Talk - Cloud Foundry over the Proxy
Maki Toshio
メール製品を作って気づいたmailライブラリの光と闇について語る
メール製品を作って気づいたmailライブラリの光と闇について語る
Maki Toshio
明日から使える(?)Rubyトリビア
明日から使える(?)Rubyトリビア
Maki Toshio
Rubyで簡単にremote access apiを実行する
Rubyで簡単にremote access apiを実行する
Maki Toshio
レガシーコード改善ガイド
レガシーコード改善ガイド
Maki Toshio
Ruby on rails on hudsonの活用事例
Ruby on rails on hudsonの活用事例
Maki Toshio
More from Maki Toshio
(11)
自社サービスのAPIをOAuth2対応にして公開した
自社サービスのAPIをOAuth2対応にして公開した
Searched gems which supports only ruby 2.6
Searched gems which supports only ruby 2.6
ActiveRecordで複雑なクエリを書くのは間違っているのか
ActiveRecordで複雑なクエリを書くのは間違っているのか
やさしいGemパッチの作り方
やさしいGemパッチの作り方
ファイルシステムのスナップショット機能でバックアップを取得する
ファイルシステムのスナップショット機能でバックアップを取得する
Cloud Foundry Day in Tokyo Lightning Talk - Cloud Foundry over the Proxy
Cloud Foundry Day in Tokyo Lightning Talk - Cloud Foundry over the Proxy
メール製品を作って気づいたmailライブラリの光と闇について語る
メール製品を作って気づいたmailライブラリの光と闇について語る
明日から使える(?)Rubyトリビア
明日から使える(?)Rubyトリビア
Rubyで簡単にremote access apiを実行する
Rubyで簡単にremote access apiを実行する
レガシーコード改善ガイド
レガシーコード改善ガイド
Ruby on rails on hudsonの活用事例
Ruby on rails on hudsonの活用事例
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にもチャレンジしてみました…が
17.
18.
19.
Ruby 3.1.3 →
Ruby 3.2.3 • YJITを有効化 • Rubyのアップデートに伴う修正は特になし • まだ本番環境に入れてないので効果は分からないが、CIでのテスト 時間が16分18秒 → 13分50秒に短縮(16%短縮) • アップデートにかかった時間は1時間程度 • 所感「YJITすげー」
Download now