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.6k
Rails 6.0 part 1
yyagi
0
3.6k
About mruby
yyagi
1
100
Rails 5.2(part1)
yyagi
1
1.6k
Rails 5.2(part2)
yyagi
0
1.7k
Railsコントリビューション
yyagi
0
250
Thinking about Rails upgrading
yyagi
0
88
Let's Hanami
yyagi
1
660
Here Comes a Rails 5.1
yyagi
1
1.8k
Other Decks in Technology
See All in Technology
公開初日に個人環境で試した Gemini CLI 体験記など / Gemini CLI実験レポート
you
PRO
3
370
【CEDEC2025】LLMを活用したゲーム開発支援と、生成AIの利活用を進める組織的な取り組み
cygames
PRO
0
210
大規模組織にAIエージェントを迅速に導入するためのセキュリティの勘所 / AI agents for large-scale organizations
i35_267
6
270
DatabricksのOLTPデータベース『Lakebase』に詳しくなろう!
inoutk
0
140
株式会社島津製作所_研究開発(集団協業と知的生産)の現場を支える、OSS知識基盤システムの導入
akahane92
1
1.2k
PHPでResult型やってみよう
higaki_program
0
200
BEYOND THE RAG🚀 ~とりあえずRAG?を超えていけ! 本当に使えるAIエージェント&生成AIプロダクトを目指して~ / BEYOND-THE-RAG-Toward Practical-GenerativeAI-Products-AOAI-DevDay-2025
jnymyk
4
520
Shadow DOM & Security - Exploring the boundary between light and shadow
masatokinugawa
0
690
OpenTelemetry の Log を使いこなそう
biwashi
5
1k
Railsの限界を超えろ!「家族アルバム みてね」の画像・動画の大規模アップロードを支えるアーキテクチャの変遷
ojima_h
3
460
MCP とマネージド PaaS で実現する大規模 AI アプリケーションの高速開発
nahokoxxx
1
1.6k
Building GoReleaser - from shell script to paid product
caarlos0
0
280
Featured
See All Featured
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.6k
Producing Creativity
orderedlist
PRO
346
40k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
7
760
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.9k
Thoughts on Productivity
jonyablonski
69
4.7k
Why Our Code Smells
bkeepers
PRO
337
57k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Designing Experiences People Love
moore
142
24k
How to Think Like a Performance Engineer
csswizardry
25
1.8k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
850
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