diff options
author | Sean Griffin <sean@seantheprogrammer.com> | 2017-09-23 05:51:36 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-09-23 05:51:36 -0600 |
commit | 8b139444dd419306e70792ff286ffecd75d67d23 (patch) | |
tree | 0d7728909b2fe322b2a72bdf78078d6f7e9d98f8 | |
parent | 202d6578f44ab03ee89ed57b73a97d513fc5a008 (diff) | |
parent | 962ce60ff1692f6f2ed1a8322319d73b9790d324 (diff) | |
download | rails-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`
-rw-r--r-- | activesupport/lib/active_support/ordered_options.rb | 2 | ||||
-rw-r--r-- | activesupport/test/ordered_options_test.rb | 13 |
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 |