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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
y-yagi
December 20, 2017
Technology
140
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Ruby 2.5 on Rails 5.2
y-yagi
December 20, 2017
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.7k
About mruby
yyagi
1
130
Rails 5.2(part1)
yyagi
1
1.7k
Rails 5.2(part2)
yyagi
0
1.8k
Railsコントリビューション
yyagi
0
270
Thinking about Rails upgrading
yyagi
0
120
Let's Hanami
yyagi
1
710
Here Comes a Rails 5.1
yyagi
1
1.8k
Other Decks in Technology
See All in Technology
人材育成分科会.pdf
_awache
4
300
いまさら聞けない「仕様駆動開発入門」 〜AI活用時代の開発プロセスを考える〜
findy_eventslides
2
160
入門!AWS Blocks
ysuzuki
1
160
SteampipeとExcel Power QueryでAWS構成定義書の作成を自動化する
jhashimoto
0
150
脆弱性対応、どこで線を引くか
rymiyamoto
1
420
マルチアカウント環境での コーディングエージェントを使った障害調査が大変なので AIエージェントにReadOnly権限を付与してみた / ReadOnly AI Agents for Multi-Account AWS Incident Response
yamaguchitk333
2
110
【Snowflake Summit 2026 Recap!!】Snowflake Summit Deep Dive: Security & Governance
civitaspo
1
260
Agent Skills設計で柔軟性と硬さのバランスが難しい話
nassy20
0
140
【セミナー資料】Claude Code をセキュアに使うための考え方と設定の勘どころ / Claude Code Webinar 20260616
masahirokawahara
2
410
AIチャット検索改善の3週間
kworkdev
PRO
2
140
徹底討論!ECS vs EKS!
daitak
0
160
コミュニティの有益性 ~JAWS Days 2026 での体験を通して~ / The Benefits of a Community ~Through My Experience at JAWS Days 2026~
seike460
PRO
0
150
Featured
See All Featured
Embracing the Ebb and Flow
colly
88
5.1k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Test your architecture with Archunit
thirion
1
2.3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Into the Great Unknown - MozCon
thekraken
41
2.6k
Un-Boring Meetings
codingconduct
0
320
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Are puppies a ranking factor?
jonoalderson
1
3.6k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.3k
Designing for Performance
lara
611
70k
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