diff options
author | Santiago Pastorino <santiago@wyeworks.com> | 2014-07-24 13:51:51 -0300 |
---|---|---|
committer | Santiago Pastorino <santiago@wyeworks.com> | 2014-07-24 13:51:51 -0300 |
commit | 3f4e97f807eb475ac8c311e5baf138249a8a1ab2 (patch) | |
tree | 41d31e87736bce2a3d3a5cbc323f74a2cbf513a6 | |
parent | 5f25435bf4b3c4e6c1dbac92ef9063420d28dc49 (diff) | |
parent | c17c262cfcae307def3a0657602adccaf7fa91cf (diff) | |
download | rails-3f4e97f807eb475ac8c311e5baf138249a8a1ab2.tar.gz rails-3f4e97f807eb475ac8c311e5baf138249a8a1ab2.tar.bz2 rails-3f4e97f807eb475ac8c311e5baf138249a8a1ab2.zip |
Merge pull request #16281 from arthurnn/copy_default_proc_hwia
Make HWIA copy the default proc too.
-rw-r--r-- | activesupport/CHANGELOG.md | 4 | ||||
-rw-r--r-- | activesupport/lib/active_support/hash_with_indifferent_access.rb | 1 | ||||
-rw-r--r-- | activesupport/test/core_ext/hash_ext_test.rb | 11 |
3 files changed, 16 insertions, 0 deletions
diff --git a/activesupport/CHANGELOG.md b/activesupport/CHANGELOG.md index f6d152174f..02aea8d21f 100644 --- a/activesupport/CHANGELOG.md +++ b/activesupport/CHANGELOG.md @@ -1,3 +1,7 @@ +* Make `Hash#with_indifferent_access` copy the default proc too. + + *arthurnn*, *Xanders* + * Add `String#truncate_words` to truncate a string by a number of words. *Mohamed Osama* diff --git a/activesupport/lib/active_support/hash_with_indifferent_access.rb b/activesupport/lib/active_support/hash_with_indifferent_access.rb index e1eb81b8bc..dc76a77a6c 100644 --- a/activesupport/lib/active_support/hash_with_indifferent_access.rb +++ b/activesupport/lib/active_support/hash_with_indifferent_access.rb @@ -75,6 +75,7 @@ module ActiveSupport hash = hash.to_hash new(hash).tap do |new_hash| new_hash.default = hash.default + new_hash.default_proc = hash.default_proc if hash.default_proc end end diff --git a/activesupport/test/core_ext/hash_ext_test.rb b/activesupport/test/core_ext/hash_ext_test.rb index 03ec20eb39..dbbb2d77da 100644 --- a/activesupport/test/core_ext/hash_ext_test.rb +++ b/activesupport/test/core_ext/hash_ext_test.rb @@ -1543,6 +1543,17 @@ class HashToXmlTest < ActiveSupport::TestCase assert_equal 3, hash_wia.default end + def test_should_copy_the_default_proc_when_converting_to_hash_with_indifferent_access + hash = Hash.new do + 2 + 1 + end + assert_equal 3, hash[:foo] + + hash_wia = hash.with_indifferent_access + assert_equal 3, hash_wia[:foo] + assert_equal 3, hash_wia[:bar] + end + # The XML builder seems to fail miserably when trying to tag something # with the same name as a Kernel method (throw, test, loop, select ...) def test_kernel_method_names_to_xml |