diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2012-07-27 12:20:50 -0500 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2012-07-27 12:22:38 -0500 |
commit | 99ea1a875b06feb4346869f371e2a57a2cc0a0fc (patch) | |
tree | 1f05fdcff4afc50dc39537b50c595fc5acde059e /activesupport/lib/active_support | |
parent | 3205c768b7c592e5b96fdf6a6dd0fd3c2c9e5775 (diff) | |
download | rails-99ea1a875b06feb4346869f371e2a57a2cc0a0fc.tar.gz rails-99ea1a875b06feb4346869f371e2a57a2cc0a0fc.tar.bz2 rails-99ea1a875b06feb4346869f371e2a57a2cc0a0fc.zip |
will now return nil instead of raise a NoMethodError if the receiving object does not implement the method
Diffstat (limited to 'activesupport/lib/active_support')
-rw-r--r-- | activesupport/lib/active_support/core_ext/object/try.rb | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/activesupport/lib/active_support/core_ext/object/try.rb b/activesupport/lib/active_support/core_ext/object/try.rb index 16a799ec03..a2d5caa7df 100644 --- a/activesupport/lib/active_support/core_ext/object/try.rb +++ b/activesupport/lib/active_support/core_ext/object/try.rb @@ -5,6 +5,9 @@ class Object # *Unlike* that method however, a +NoMethodError+ exception will *not* be raised # and +nil+ will be returned instead, if the receiving object is a +nil+ object or NilClass. # + # This is also true if the receiving object does not implemented the tried method. It will + # return +nil+ in that case as well. + # # If try is called without a method to call, it will yield any given block with the object. # # Please also note that +try+ is defined on +Object+, therefore it won't work with @@ -31,7 +34,7 @@ class Object if a.empty? && block_given? yield self else - public_send(*a, &b) + public_send(*a, &b) if respond_to?(a.first) end end end |