aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRick Olson <technoweenie@gmail.com>2007-12-08 00:12:52 +0000
committerRick Olson <technoweenie@gmail.com>2007-12-08 00:12:52 +0000
commit4dcd4069f577e2105ea25929be1350fcefb9f71d (patch)
tree6501ef68e3c7594580620e8fc6a182507d8350ff
parent1acd54a5b44639ecb0bd0e37545a2e862df2b9a7 (diff)
downloadrails-4dcd4069f577e2105ea25929be1350fcefb9f71d.tar.gz
rails-4dcd4069f577e2105ea25929be1350fcefb9f71d.tar.bz2
rails-4dcd4069f577e2105ea25929be1350fcefb9f71d.zip
Fix HashWithIndifferentAccess#to_options! so it doesn't clear the options hash. Closes #10419 [ReinH]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8332 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
-rw-r--r--activesupport/CHANGELOG2
-rw-r--r--activesupport/lib/active_support/core_ext/hash/indifferent_access.rb1
-rw-r--r--activesupport/test/core_ext/hash_ext_test.rb8
3 files changed, 11 insertions, 0 deletions
diff --git a/activesupport/CHANGELOG b/activesupport/CHANGELOG
index 40fdbbbf45..67da6f2379 100644
--- a/activesupport/CHANGELOG
+++ b/activesupport/CHANGELOG
@@ -1,3 +1,5 @@
+* Fix HashWithIndifferentAccess#to_options! so it doesn't clear the options hash. Closes #10419 [ReinH]
+
*2.0.1* (December 7th, 2007)
* Added Array#from and Array#to that behaves just from String#from and String#to [DHH]
diff --git a/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb b/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb
index 01d5b3a6a3..fda0489e76 100644
--- a/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb
+++ b/activesupport/lib/active_support/core_ext/hash/indifferent_access.rb
@@ -63,6 +63,7 @@ class HashWithIndifferentAccess < Hash
def stringify_keys!; self end
def symbolize_keys!; self end
+ def to_options!; self end
# Convert to a Hash with String keys.
def to_hash
diff --git a/activesupport/test/core_ext/hash_ext_test.rb b/activesupport/test/core_ext/hash_ext_test.rb
index 2be9ab8999..3763f47c68 100644
--- a/activesupport/test/core_ext/hash_ext_test.rb
+++ b/activesupport/test/core_ext/hash_ext_test.rb
@@ -205,6 +205,14 @@ class HashExtTest < Test::Unit::TestCase
assert_equal 1, h[:first]
end
+ def test_to_options_on_indifferent_preserves_hash
+ h = HashWithIndifferentAccess.new
+ h['first'] = 1
+ h.to_options!
+ assert_equal 1, h['first']
+ end
+
+
def test_indifferent_subhashes
h = {'user' => {'id' => 5}}.with_indifferent_access
['user', :user].each {|user| [:id, 'id'].each {|id| assert_equal 5, h[user][id], "h[#{user.inspect}][#{id.inspect}] should be 5"}}