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
240
Thinking about Rails upgrading
yyagi
0
85
Let's Hanami
yyagi
1
660
Here Comes a Rails 5.1
yyagi
1
1.8k
Other Decks in Technology
See All in Technology
LinkX_GitHubを基点にした_AI時代のプロジェクトマネジメント.pdf
iotcomjpadmin
0
170
Amazon S3標準/ S3 Tables/S3 Express One Zoneを使ったログ分析
shigeruoda
3
450
Witchcraft for Memory
pocke
1
210
Navigation3でViewModelにデータを渡す方法
mikanichinose
0
220
Welcome to the LLM Club
koic
0
160
20250623 Findy Lunch LT Brown
3150
0
840
AWS アーキテクチャ作図入門/aws-architecture-diagram-101
ma2shita
29
10k
第9回情シス転職ミートアップ_テックタッチ株式会社
forester3003
0
210
PHPでWebブラウザのレンダリングエンジンを実装する
dip_tech
PRO
0
200
AIの最新技術&テーマをつまんで紹介&フリートークするシリーズ #1 量子機械学習の入門
tkhresk
0
130
米国国防総省のDevSecOpsライフサイクルをAWSのセキュリティサービスとOSSで実現
syoshie
2
980
GeminiとNotebookLMによる金融実務の業務革新
abenben
0
220
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
54
13k
How GitHub (no longer) Works
holman
314
140k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.3k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
490
Building a Scalable Design System with Sketch
lauravandoore
462
33k
A better future with KSS
kneath
239
17k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
670
The Language of Interfaces
destraynor
158
25k
Become a Pro
speakerdeck
PRO
28
5.4k
Balancing Empowerment & Direction
lara
1
360
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