なるようになるブログ

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

rails commit log流し読み(2015/07/16)

2015/07/16分のコミットです。

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

actionpack/CHANGELOG.md

activerecord/CHANGELOG.md


Make AC::Parameters not inherited from Hash

ActionPackの修正です。

ActionController::ParametersクラスがHashWithIndifferentAccessクラスを継承していたのを、継承しないよう修正しています。

元々HashWithIndifferentAccessを継承していたのを、Parametersオブジェクトでenumerable methodsを使用出来るようにする為だったのですが、 HashWithIndifferentAccessが提供しているenumerable methodsを使用してしまうと、permitted? の情報が失われてしまったり、 サニタイズ処理が行われていない素のHashオブジェクトが取得出来たりと、セキュリティに問題があるのでは、という事で修正されたようです。

必要そうなメソッドParametersクラス内に独自に定義されているので、普通に使用する分には、問題無さそうです。


Revert "Revert "Reduce allocations when running AR callbacks.""

callback処理のオブジェクト生成数削減の為の改善を行った、Reduce allocations when running AR callbacks. · rails/rails@796cab4 のrevertをrevertしています。再度コミットされた状態ですね。

性能改善していないのでは、という理由で一度revertしたのですが、再度性能測定した結果改善が見られたので、再度コミットされたようです。


Update documentation on AC::Parameters

actionpack/lib/action_controller/metal/strong_parameters.rbのdocの修正です。

先のコミットで追加されたActionController::Parametersクラスの各メソッドにdocを追加しています。


Deprecate force association reload by passing true

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

association methodにtrueを渡すとreload処理が行われる、という挙動がdeprecateになりました。 代わりに、reloadメソッドの方を使用するようにとの事です。

# NG
@user.posts(true)

# OK
@user.posts.reload

reloadメソッドあるし、処理として解りづらいから削除で良いんじゃない、という事でdeprecateになったようです。詳細はGoogleのフォーラム参照

association methodにtrueを渡すとreloadが行われる、という挙動自体を初めて知りました。


Standardize ActionController::Parameters#to_unsafe_h return value

actionpack/lib/action_controller/metal/strong_parameters.rbの修正です。

ActionController::Parameters#to_unsafe_hメソッドの戻り値をHashWithIndifferentAccessクラスからHashに修正しています。

ActionController::Parameters#to_hHashを返す為、戻り値のクラスに一貫性を持たせるようto_unsafe_hクラスもHashを返すようにしたとの事です。