狠狠撸

狠狠撸Share a Scribd company logo
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
Ruby?2.4?/?
Rails?5.0に上げ
た際のパッチ5選
表参道.rb?#19
Sansan株式会社
2017-02-02?(Thu)
伊藤?浩??(@koic)
(株)永和システムマネジメント
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
わたし
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
今?の話
アプリケーションコードは巨?
の肩に乗った氷?の?角
?
"Gem?le.lock?に記されている
コードはプロジェクトのコード
としてメンテナンス対象であ
る"
?
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
まとめ
アップグレードの道のりは1年前
にははじまっている
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
アップグレードへの症状例
分かりやすいのは、そもそも?
rails?server?が起動しない
?
自動テストをパスしない?
アップグレードすれば噛み合わ
せの悪いライブラリは出てきた
りする
?
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
upstreamへの還元5選
bkeepers/dotenv#251?
cowboyd/therubyracer#413?
rsim/oracle-
enhanced#1084
?
kubo/ruby-oci8#144?
sferik/rails?admin#2789?
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
2016年3?
https://github.com/
bkeepers/dotenv/pull/251
?
Fix?a?failure?spec?in?ruby?
2.4.0dev
?
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
di?
????????????
??????????????????
???????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????
??????????
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
期待する振る舞いが分からな
い
https://bugs.ruby-lang.org/
issues/12121?で問い合わせ
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
最?ケースの作成
?????????
??????????????
???
?????????
??????????????
??????????????
???
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
結果
Ruby?2.3.0?...?p?
M2.constants?#?=>?[:B,?:A]
?
Ruby?2.4.0?...?p?
M2.constants?#?=>?[:A,?:B]
?
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
回答から抜粋
これは、ドキュメントの問題
だ と思い ま す 。
Module#constantsの戻り順
を保障したことはないし、こ
れからも保障されないと思い
ます。今回は?速化の?環と
して順序が変わりましたが、
今後も同様のことは起き得ま
す。
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
どういうことだったか?
値を割り当ててから実?という
流れが、値を割り当てる前に実
?になってエラー
?
Module#constants?の戻り値
の順序が変わっていた
?
仕様?(?速化の?環で順序が変
わったが、そもそも順序の保証
はない)
?
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
2016年5?
https://github.com/
cowboyd/therubyracer/
pull/413
?
Support?for?uni?ed?Integer?
class?in?Ruby?2.4+
?
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
di?
?????????????????????????????????????????????????????????????????????????????????????????
??????????????????????????????????????????????????????????????????????????????????????????
??????????????????????
?????????????????????????????????????????????????
???????
?????
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
どういうものだったか?
Ruby?2.4?では?Fixnum?=>?
Integer?となり、Integer?に対
応する?module?がなくてエラ
ー。
?
2017年1?にリリースされ
た。
?
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
2016年12?
https://github.com/rsim/
oracle-enhanced/pull/1084
?
Fix?ORA-00933?error?when?
executing?`rails?
db:schema:load`
?
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
di??(1)
??????????????????????????
???????
???????????????????????????????????????????????????
???
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
di??(2)
???????????????????????????????????????????
??????????????????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????????????????
????????????????????????????
???????????????????????????????????????????????????????????????
??????????????????????
?????????????????????????????
??????????????????????????????????????????????????????
????????????????????????????????????????????????????????????????????????
?????????????????????????????????
????????
??????????????????????????????
???????????????????????????????????????????????????????????????????????????
????????????????????????????????
????????????????????????????????????????????????????????????????????????
???????????????????????????
??????????
????????????????????????????????????????????????????????????????????????????????
???????????????????????????????????????????????????????????????????????
?????????
???????
?????
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
どういうものだったか?
`rails?db:migrate`?だと積み重
ねただけのマイグレーションが
実?されて遅い
?
db/schema.rb?を共有して、
`rails?db:schema:load`?実??
(テスト/CI環境)
?
Rails?5?で導?されたマルチイ
ンサート対応が必要で?`rails?
db:schema:load`?でエラー
?
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
2016年12?
https://github.com/kubo/
ruby-oci8/pull/144
?
Fix?invalid?value?for?
BigDecimal?in?Ruby?2.4.0+
?
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
di?
違いが分かりますか?
?
???????????????????
?????????????????????????????????
?????????????????????????????????????????????????????????????????????????
?????????????????????????????????????????????????????????????????????????
?????????????????????????
???????????????????????????????????
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
どういうものだったか?
`rake?spec`?を実?してエラ
ーになった??(記憶がおぼろ)
?
Ruby?2.3?でパスしていた?1.E
+00?という値が、Ruby?2.4?
だとパスしなかった
?
仕様が分からないので、ruby/
decimal?に?ISSUE?を書いて回
答をもらう
?
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
2016年12?
https://github.com/sferik/
rails?admin/pull/2789
?
Fix?#encoding?error?by?
oracle?enhanced
?
@ojiryメンバーによるパッチ?
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
di?
????????????
?????????????????????????????????????????????????????????
?????????????????????
?????????????????????????????????????????????????????????????????????????????????????????????????
?????????????????
??????????????????????????????????????????????????????????????????????????????????
??????????????????????????
????????????????????????????????????????????????????????????????????????????????????????????????
????????
???????????????????????????????????????????????????????????????????????????????????????????
???????
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
どういうものだったか?
PostgreSQL?/?MySQL?/?
SQLite?(?)?でない?RDBMS?は
別途対応が必要だった
?
PR?を?てもらうサポートをす
る
?
リポジトリの所有者よりも最近
マージボタンを押すような活動
しているコミッターにメンショ
ンする
?
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
まだ時間
はありま
すね?
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
Kaminari?1.0.0
https://github.com/sferik/
rails?admin/pull/2810
?
Loosen?the?dependency?
version?of?Kaminari?(1.0.0)
?
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
di?
?????????????????????????????????????????????????????
???????????????????????????????????????????????????
?????????????????????????????????????????????
??????????????????????????????????????????????????????
???????????????????????????????????????????????
?????????????????????????????????????????????
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
どういうものだったか?
gemspec?での縛りを緩めて、
CI?用に?Gem?le?での縛りを作
るお仕事
?
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
Conclusion
kamipo名??"困ってる?がい
る問題が直るのではなく直す気
のある?がいる問題が直る"
?
(汎用的なフレームワークは難
しくても)?特化されたアプリケ
ーション起点でのエラーなら分
かりやすい
?
多?数が数年に渡って関わるよ
うなアプリケーションでは特に
アップグレード重要
?
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
Values
最新の安定版?Rails?に速く乗る?
自信を持ってプロジェクト(へ
の加?)を進められる
?
新しいバージョンを使うこと
で?EOL?に出会わずにすむ
?
"Ruby?はバージョンを上げる
だけで速くなる"
?
No?hate?
Ruby?2.4?/?Rails?5.0に上げた際のパッチ5選 Powered?by?Rabbit?2.1.9
まとめ
アップグレードの道のりは1年前
にははじまっている

More Related Content

Ruby 2.4 / Rails 5.0に上げた際のパッチ5選