なるようになるブログ

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

rails commit log流し読み(2016/04/16)

2016/04/16分のコミットです。

CHANGELOGへの追加はありませんでした。


Filter scalar values when params permit hashes or arrays

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

ActionController::Parameters#permitメソッドで、引数にHashが指定された場合に、scalar valueをfilterするよう修正しています。

誤って正常なパラメータであると判定されてしまうケースがあり、それを防ぐ為に対応したようです。

# before
params = ActionController::Parameters.new(foo: "bar")
params.permit(foo: [:bar]).has_key?(:foo)
# => true

# after
params = ActionController::Parameters.new(foo: "bar")
params.permit(foo: [:bar]).has_key?(:foo)
# => false

Merge pull request #24517 from estolfo/transform-keys-return-type-master

activesupport/lib/active_support/core_ext/hash/keys.rbの修正です。

Hash#transform_keysメソッドが、必ずHashクラスのインスタンスを返すよう修正しています。

Rails 4.1までは必ずHashクラスのインスタンスを返すようになっていたのですが、Rails 4.2からself.classインスタンスを返すようになってしまっていました。他のHashクラスのメソッドと挙動をあわせる為、再度Hashクラスのインスタンスを返すよう戻してます。

PRより。

# Rails 4.1

doc = BSON::Document.new("a" => 1)
# => {"a"=>1}
doc.symbolize_keys
# => {:a=>1}
doc.symbolize_keys.class
# => Hash
# Rails 4.2

doc = BSON::Document.new("a" => 1)
# => {"a"=>1}
doc.symbolize_keys
# => {"a"=>1}
doc.symbolize_keys.class
# => BSON::Document

Add a note about how to execute 'rails app:update' on 4.2 and earlier [ci skip]

rails guideのA Guide for Upgrading Ruby on Railsの修正です。

The Taskの項のapp:update taskについて説明している箇所に、Rails 4.2より前では、task名はrails:updateだった旨説明を追加しています。