Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

777 views

Published on

表参道.rb #19 https://omotesandorb.connpass.com/event/48967

Published in: Engineering
  • Be the first to comment

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

  1. 1. 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) (株)永和システムマネジメント
  2. 2. Ruby�2.4�/�Rails�5.0に上げた際のパッチ5選 Powered�by�Rabbit�2.1.9 わたし
  3. 3. Ruby�2.4�/�Rails�5.0に上げた際のパッチ5選 Powered�by�Rabbit�2.1.9 今⽇の話 アプリケーションコードは巨⼈ の肩に乗った氷⼭の⼀角 ✓ "Gemfile.lock�に記されている コードはプロジェクトのコード としてメンテナンス対象であ る" ✓
  4. 4. Ruby�2.4�/�Rails�5.0に上げた際のパッチ5選 Powered�by�Rabbit�2.1.9 まとめ アップグレードの道のりは1年前 にははじまっている
  5. 5. Ruby�2.4�/�Rails�5.0に上げた際のパッチ5選 Powered�by�Rabbit�2.1.9 アップグレードへの症状例 分かりやすいのは、そもそも� rails�server�が起動しない ✓ 自動テストをパスしない✓ アップグレードすれば噛み合わ せの悪いライブラリは出てきた りする ✓
  6. 6. 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✓
  7. 7. 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 ✓
  8. 8. Ruby�2.4�/�Rails�5.0に上げた際のパッチ5選 Powered�by�Rabbit�2.1.9 diff ������������ ������������������ ��������������������������������������������������������������������������� ���������������������������������������������������������������������� ����������
  9. 9. Ruby�2.4�/�Rails�5.0に上げた際のパッチ5選 Powered�by�Rabbit�2.1.9 期待する振る舞いが分からな い https://bugs.ruby-lang.org/ issues/12121�で問い合わせ
  10. 10. Ruby�2.4�/�Rails�5.0に上げた際のパッチ5選 Powered�by�Rabbit�2.1.9 最⼩ケースの作成 ��������� �������������� ��� ��������� �������������� �������������� ���
  11. 11. 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] ✓
  12. 12. Ruby�2.4�/�Rails�5.0に上げた際のパッチ5選 Powered�by�Rabbit�2.1.9 回答から抜粋 これは、ドキュメントの問題 だ と思い ま す 。 Module#constantsの戻り順 を保障したことはないし、こ れからも保障されないと思い ます。今回は⾼速化の⼀環と して順序が変わりましたが、 今後も同様のことは起き得ま す。
  13. 13. Ruby�2.4�/�Rails�5.0に上げた際のパッチ5選 Powered�by�Rabbit�2.1.9 どういうことだったか? 値を割り当ててから実⾏という 流れが、値を割り当てる前に実 ⾏になってエラー ✓ Module#constants�の戻り値 の順序が変わっていた ✓ 仕様�(⾼速化の⼀環で順序が変 わったが、そもそも順序の保証 はない) ✓
  14. 14. Ruby�2.4�/�Rails�5.0に上げた際のパッチ5選 Powered�by�Rabbit�2.1.9 2016年5⽉ https://github.com/ cowboyd/therubyracer/ pull/413 ✓ Support�for�unified�Integer� class�in�Ruby�2.4+ ✓
  15. 15. Ruby�2.4�/�Rails�5.0に上げた際のパッチ5選 Powered�by�Rabbit�2.1.9 diff ����������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������ ���������������������� ������������������������������������������������� ������� �����
  16. 16. Ruby�2.4�/�Rails�5.0に上げた際のパッチ5選 Powered�by�Rabbit�2.1.9 どういうものだったか? Ruby�2.4�では�Fixnum�=>� Integer�となり、Integer�に対 応する�module�がなくてエラ ー。 ✓ 2017年1⽉にリリースされ た。 ✓
  17. 17. 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` ✓
  18. 18. Ruby�2.4�/�Rails�5.0に上げた際のパッチ5選 Powered�by�Rabbit�2.1.9 diff�(1) �������������������������� ������� ��������������������������������������������������� ���
  19. 19. Ruby�2.4�/�Rails�5.0に上げた際のパッチ5選 Powered�by�Rabbit�2.1.9 diff�(2) ������������������������������������������� ������������������������������������������������������������������ ������������������������������������������������������������������������������������ ���������������������������� ��������������������������������������������������������������� ���������������������� ����������������������������� ������������������������������������������������������ ������������������������������������������������������������������������ ��������������������������������� �������� ������������������������������ ��������������������������������������������������������������������������� �������������������������������� ������������������������������������������������������������������������ ��������������������������� ���������� �������������������������������������������������������������������������������� ����������������������������������������������������������������������� ��������� ������� �����
  20. 20. 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`�でエラー ✓
  21. 21. 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+ ✓
  22. 22. Ruby�2.4�/�Rails�5.0に上げた際のパッチ5選 Powered�by�Rabbit�2.1.9 diff 違いが分かりますか? � ������������������� ��������������������������������� ������������������������������������������������������������������������� ������������������������������������������������������������������������� ������������������������� �����������������������������������
  23. 23. 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�を書いて回 答をもらう ✓
  24. 24. 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メンバーによるパッチ✓
  25. 25. Ruby�2.4�/�Rails�5.0に上げた際のパッチ5選 Powered�by�Rabbit�2.1.9 diff ������������ ��������������������������������������������������������� ��������������������� ������������������������������������������������������������������������������������������������� ����������������� ���������������������������������������������������������������������������������� �������������������������� ������������������������������������������������������������������������������������������������ �������� ������������������������������������������������������������������������������������������� �������
  26. 26. Ruby�2.4�/�Rails�5.0に上げた際のパッチ5選 Powered�by�Rabbit�2.1.9 どういうものだったか? PostgreSQL�/�MySQL�/� SQLite�(?)�でない�RDBMS�は 別途対応が必要だった ✓ PR�を⾒てもらうサポートをす る ✓ リポジトリの所有者よりも最近 マージボタンを押すような活動 しているコミッターにメンショ ンする ✓
  27. 27. Ruby�2.4�/�Rails�5.0に上げた際のパッチ5選 Powered�by�Rabbit�2.1.9 まだ時間 はありま すね?
  28. 28. 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) ✓
  29. 29. Ruby�2.4�/�Rails�5.0に上げた際のパッチ5選 Powered�by�Rabbit�2.1.9 diff ����������������������������������������������������� ��������������������������������������������������� ��������������������������������������������� ������������������������������������������������������ ����������������������������������������������� ���������������������������������������������
  30. 30. Ruby�2.4�/�Rails�5.0に上げた際のパッチ5選 Powered�by�Rabbit�2.1.9 どういうものだったか? gemspec�での縛りを緩めて、 CI�用に�Gemfile�での縛りを作 るお仕事 ✓
  31. 31. Ruby�2.4�/�Rails�5.0に上げた際のパッチ5選 Powered�by�Rabbit�2.1.9 Conclusion kamipo名⾔�"困ってる⼈がい る問題が直るのではなく直す気 のある⼈がいる問題が直る" ✓ (汎用的なフレームワークは難 しくても)�特化されたアプリケ ーション起点でのエラーなら分 かりやすい ✓ 多⼈数が数年に渡って関わるよ うなアプリケーションでは特に アップグレード重要 ✓
  32. 32. Ruby�2.4�/�Rails�5.0に上げた際のパッチ5選 Powered�by�Rabbit�2.1.9 Values 最新の安定版�Rails�に速く乗る✓ 自信を持ってプロジェクト(へ の加⼊)を進められる ✓ 新しいバージョンを使うこと で�EOL�に出会わずにすむ ✓ "Ruby�はバージョンを上げる だけで速くなる" ✓ No�hate✓
  33. 33. Ruby�2.4�/�Rails�5.0に上げた際のパッチ5選 Powered�by�Rabbit�2.1.9 まとめ アップグレードの道のりは1年前 にははじまっている

×