なるようになるブログ

読書感想文かrailsについてかrubyについてか

rails commit log流し読み(2017/07/28)

2017/07/28分のコミットです。

CHANGELOGにのったコミットは以下の通りです。

activesupport/CHANGELOG.md


Eager load the association classes on boot

activerecord/lib/active_record/associations.rbの修正です。

association classes(BelongsToAssociationHasManyAssociation等)をboot時にeager loadするよう修正しています。

元々association classesはautoloadの対象になっており、参照された際に自動でloadするようになってはいたのですが、複数スレッドで同時にautoloadした際に、一つのスレッドはloadに成功するがもう一つの方はloadに失敗し、結果エラー(NameError)になってしまう、という問題があった為、boot時にeager loadするようにしたようです。

関連:Bug #12688: Thread unsafety in autoload

が、今のMRIのautoloadはスレッドセーフになっている、という指摘もあり、実際何が原因かは正確にはわかってなさそうな感じです。


[ci skip] update routing guide

rails guideのRails Routing from the Outside Inの修正です。

HTTP Verb Constraintsの項、"GET"がシングルクォートで囲まれていたのを、バッククォートで囲むよう修正しています。code blockで表示されるようにする為。


Squashed commit of the following:

rails guideのRails Routing from the Outside Inの修正です。

各項でメソッド名等をバッククォートで囲むよう修正しています。


Add missing support for modulo operations on durations

activesupport/lib/active_support/duration.rbの修正です。

Durationの剰余演算で結果が正しく取得出来ないバグがあったのを修正しています。

# before

5.minutes % 120
# => 60
5.minutes % 2.minutes
# => -18000 minutesと300 seconds


# after

5.minutes % 120
# => 1 minute
5.minutes % 2.minutes
# => 1 minute