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
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
140
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
720
Here Comes a Rails 5.1
yyagi
1
1.8k
Other Decks in Technology
See All in Technology
え?フロントエンドエンジニアの ワイがインフラも!?
puku0x
0
270
名古屋の市バスGTFS-JPデータ×スガキヤ 最寄りバス停検索をAmazon ElastiCache Serverless for Valkeyで最適化する
usanchuu
1
270
タクシーアプリ『GO』の実践的データ活用〜位置情報データの収集とStreamlitでの可視化〜
mot_techtalk
2
200
[MIRU26] To What Extent Does MLLM-as-a-Judge Exhibit Cross-Model Preference Bias?
keio_smilab
PRO
0
200
Retriever と Reranker、結局どうする?
kazuaki
2
670
SnowflakeCoCoでデータエンジニアリング!
foursue
0
180
『三匹の子ぶた』から学ぶネットワークセキュリティの昔と今 / Network Security: Then and Now Through the Lens of The Three Little Pigs
nttcom
1
1.7k
Digitization部 紹介資料
sansan33
PRO
2
7.7k
Forza Horizon 6 のテレメトリ機能で 自動運転に使えそうな学習データを集める話
henjin0
0
120
Pavlokで始める電撃駆動開発
sgrsn
0
170
メルカリのグローバルアプリで挑んだ AlloyDB 運用と課題解決の実践記
hatappi
0
230
【CEDEC2026】次世代デジタルカードゲームのサーバー設計と運用 〜『Shadowverse: Worlds Beyond』の舞台裏~
cygames
PRO
0
850
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
200
Writing Fast Ruby
sferik
630
63k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.1k
Product Roadmaps are Hard
iamctodd
55
12k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
190
Unsuck your backbone
ammeep
672
58k
Docker and Python
trallard
47
4.1k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
Abbi's Birthday
coloredviolet
3
9.1k
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