aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
diff options
context:
space:
mode:
authorSean Griffin <sean@seantheprogrammer.com>2017-09-23 05:51:36 -0600
committerGitHub <noreply@github.com>2017-09-23 05:51:36 -0600
commit8b139444dd419306e70792ff286ffecd75d67d23 (patch)
tree0d7728909b2fe322b2a72bdf78078d6f7e9d98f8 /activesupport
parent202d6578f44ab03ee89ed57b73a97d513fc5a008 (diff)
parent962ce60ff1692f6f2ed1a8322319d73b9790d324 (diff)
downloadrails-8b139444dd419306e70792ff286ffecd75d67d23.tar.gz
rails-8b139444dd419306e70792ff286ffecd75d67d23.tar.bz2
rails-8b139444dd419306e70792ff286ffecd75d67d23.zip
Merge pull request #30688 from y-yagi/make_bang_verion_work_with_inheritable_options
Make bang version work with `InheritableOptions`
Diffstat (limited to 'activesupport')
-rw-r--r--activesupport/lib/active_support/ordered_options.rb2
-rw-r--r--activesupport/test/ordered_options_test.rb13
2 files changed, 14 insertions, 1 deletions
diff --git a/activesupport/lib/active_support/ordered_options.rb b/activesupport/lib/active_support/ordered_options.rb
index c2a37fbdd7..b74510fdb2 100644
--- a/activesupport/lib/active_support/ordered_options.rb
+++ b/activesupport/lib/active_support/ordered_options.rb
@@ -46,7 +46,7 @@ module ActiveSupport
bangs = name_string.chomp!("!")
if bangs
- fetch(name_string.to_sym).presence || raise(KeyError.new(":#{name_string} is blank"))
+ self[name_string].presence || raise(KeyError.new(":#{name_string} is blank"))
else
self[name_string]
end
diff --git a/activesupport/test/ordered_options_test.rb b/activesupport/test/ordered_options_test.rb
index 7f2e774c02..2c67bb02ac 100644
--- a/activesupport/test/ordered_options_test.rb
+++ b/activesupport/test/ordered_options_test.rb
@@ -102,4 +102,17 @@ class OrderedOptionsTest < ActiveSupport::TestCase
end
assert_raises(KeyError) { a.non_existing_key! }
end
+
+ def test_inheritable_options_with_bang
+ a = ActiveSupport::InheritableOptions.new(foo: :bar)
+
+ assert_nothing_raised { a.foo! }
+ assert_equal a.foo, a.foo!
+
+ assert_raises(KeyError) do
+ a.foo = nil
+ a.foo!
+ end
+ assert_raises(KeyError) { a.non_existing_key! }
+ end
end