Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Ruby 2.5 on Rails 5.2
Search
y-yagi
December 20, 2017
Technology
0
120
Ruby 2.5 on Rails 5.2
y-yagi
December 20, 2017
Tweet
Share
More Decks by y-yagi
See All by y-yagi
Rails 6.0 part 2
yyagi
0
3.7k
Rails 6.0 part 1
yyagi
0
3.6k
About mruby
yyagi
1
120
Rails 5.2(part1)
yyagi
1
1.7k
Rails 5.2(part2)
yyagi
0
1.7k
Railsコントリビューション
yyagi
0
250
Thinking about Rails upgrading
yyagi
0
93
Let's Hanami
yyagi
1
680
Here Comes a Rails 5.1
yyagi
1
1.8k
Other Decks in Technology
See All in Technology
漸進的過負荷の原則
sansantech
PRO
3
430
【インシデント入門】サイバー攻撃を受けた現場って何してるの?
shumei_ito
0
1.3k
セキュリティ はじめの一歩
nikinusu
0
1.3k
BiDiってなんだ?
tomorrowkey
2
520
Regional_NAT_Gatewayについて_basicとの違い_試した内容スケールアウト_インについて_IPv6_dual_networkでの使い分けなど.pdf
cloudevcode
1
200
Zephyr RTOS の発表をOpen Source Summit Japan 2025で行った件
iotengineer22
0
300
日本語テキストと音楽の対照学習の技術とその応用
lycorptech_jp
PRO
1
380
ドキュメントからはじめる未来のソフトウェア
pkshadeck
4
2.1k
SREが向き合う大規模リアーキテクチャ 〜信頼性とアジリティの両立〜
zepprix
0
220
Tebiki Engineering Team Deck
tebiki
0
23k
変化するコーディングエージェントとの現実的な付き合い方 〜Cursor安定択説と、ツールに依存しない「資産」〜
empitsu
3
810
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
17k
Featured
See All Featured
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
87
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
84
How Software Deployment tools have changed in the past 20 years
geshan
0
31k
Producing Creativity
orderedlist
PRO
348
40k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.3k
How to Think Like a Performance Engineer
csswizardry
28
2.4k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.2k
The Spectacular Lies of Maps
axbom
PRO
1
490
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
0
2.3k
GraphQLとの向き合い方2022年版
quramy
50
14k
エンジニアに許された特別な時間の終わり
watany
106
230k
Transcript
RUBY 2.5 ON RAILS 5.2 GINZA.RB / @Y-YAGI Ruby 2.5
on Rails 5.2
ABOUT Ruby 2.5に向けてしてRailsでも色々な対応が行わ れました(& 行われています). どのような対応が 行われたか見てみましょう. なお、本資料は2017/12/19時点での情報で作成さ れています. 実際のコードと異なる可能性もあり
ます. あしからず. Ruby 2.5 on Rails 5.2
Ruby本体にHash#transform_keysが追加され たので、transform_keysが既に定義済みな ら、そちらを使用するよう対応 HASH#TRANSFORM_KEYS IS IN RUBY 2.5+ Ruby 2.5
on Rails 5.2
Ruby本体にHash#sliceが追加されたので、 sliceが既に定義済みなら、そちらを使用する よう対応 合わせて、Hash#sliceメソッドが必ずHashク ラスのインスタンスを返すよう修正 Rubyに組み込みのHash#sliceと挙動を合わ せる為 LET HASH#SLICE RETURN
A HASH Ruby 2.5 on Rails 5.2
元々はself.class.newを返すようになってい たので、Hashを拡張したクラスでsliceを使用 した場合の結果が変わるので注意が必要 HashWithIndifferentAccessについては 変わらずHashWithIndifferentAccessの インスタンスを返すよう対応済み LET HASH#SLICE RETURN A
HASH Ruby 2.5 on Rails 5.2
下位互換性の為に残してあったtop levelの HashWithIndifferentAccessがdeprecateに なった Ruby 2.5からトップレベルの定数は参照されなく なったのでついでに REMOVE THE TOP-LEVEL
HASHWITHINDIFFERENTACCESS CONTANT Ruby 2.5 on Rails 5.2
Rational、ComplexがRuby 2.5ではdup出来るようになった 為、それに合わせてComplex#duplicable?、 Rational#duplicable?メソッドがtrueを返すようにな った FIX DUPLICABLE? FOR RATIONAL AND
COMPLEX Ruby 2.5 on Rails 5.2
Rubyのwanring(assigned but unused variable)を避 ける為にダブルアサインを使用する、というテ クニックがあった が、Ruby 2.5では上記テクニックが使えなくなっ た(普通にwarningが出るようになった)ので、自 身に代入する、という対応を行った
DOUBLE ASSIGN IS NO LONGER AN EFFECTIVE WORKAROUND FOR UNUSED VARIABLE WARNING Ruby 2.5 on Rails 5.2
ここからテストの修正のみ Ruby 2.5 on Rails 5.2
Integerのround/floor等の数値を丸めるメソッド に、引数で小数点以下の桁数を指定した時にも Integer を返すようにする仕様変更が入った Integer を Float にした時に精度が足りずに値が 変化してしまうのを避けるためだそうな ADDRESS
LOGSUBSCRIBERTEST FAILURES TO SUPPORT RAILS 2.5.0-DEV Feature #13420: Integer# {round,floor,ceil,truncate} should always return an integer, not a float Ruby 2.5 on Rails 5.2
ERB::Util.url_encodeメソッドが~をエスケ ープしなくなった エスケープされなくなったのは、~はUnreserved Charactersに含まれていなかった為 ERB::UTIL.URL_ENCODE NO LONGER ESCAPES ~ SINCE
RUBY 2.5 Bug #6696: [PATCH] ERB::Util.url_encode should not escape unreserved characters RFC 3986 - Uniform Resource Identifier (URI): Generic Syntax Ruby 2.5 on Rails 5.2
BigDecimal 1.3.3でBigDecimal.newが deprecatedになり、BigDecimalのインスタンス を生成するにはKernel.BigDecimalを使わな ければならなくなった BigDecimalをnumericクラスのようにimmutable + frozenにする為らしい SUPPRESS WARNING:
BIGDECIMAL.NEW IS DEPRECATED Removing BigDecimal.new to match core numeric classes like Integer Ruby 2.5 on Rails 5.2
Thread#report_on_exceptionのデフォルト がtrueになった事により本来不要なエラーも表示 されるようになった 不要な箇所ではreport_on_exceptionに falseを指定するようにして対応した が、これにより気付けたエラーもあったので、 良かった SUPPRESS EXPECTED EXCEPTIONS
BY REPORT_ON_EXCEPTION = FALSE IN RU… Ruby 2.5 on Rails 5.2
惜しくも入らなかった対応 Ruby 2.5 on Rails 5.2
各コンポーネントでrequireの代わりに require_relativeを使用するよう対応 require_relativeは、requireよりもはやい ($LOAD_PATHをスキャンせず対象のファイルを 直接読み込む為)為 また、require_relativeはrequireと異な り、RubyGemsやBundlerにオーバーライドされ てない為、不要なパッチを避ける事が出来 る、というのもあるらしい USING
REQUIRE_RELATIVE IN THE RAILS CODEBASE Ruby 2.5 on Rails 5.2
が、Ruby 2.4までだとrequire_relativeはシ ンボリックリンク先のファイルをロード出来な い(Rubyのインストール先がシンボリックリンク を使用している場合ファイルをロード出来ずエ ラーになる)、という問題があった為、後ほど revert Ruby 2.5では上記問題は対応済み Rails
6.0でどうだろう USING REQUIRE_RELATIVE IN THE RAILS CODEBASE Ruby 2.5 on Rails 5.2
CONCLUSION 色んな人たちのおかげでRails 5.2はRuby 2.5で無 事使えるようになっています :pray: とはいえ、見落としもあると思うので、みんな でRuby 2.5 +
Railsを 5.2使ってバグ踏んでいこう な Ruby 2.5 on Rails 5.2