diff options
author | Ari Pollak <ajp@aripollak.com> | 2014-10-23 21:47:16 -0400 |
---|---|---|
committer | Ari Pollak <ajp@aripollak.com> | 2014-10-23 21:47:16 -0400 |
commit | 22f6189a55b3a096e91d3ec3a97cf5114fc93b72 (patch) | |
tree | ec14cda8a10636d06e6e98b5fa0429ab4d45f721 /activesupport | |
parent | be49ec4b1f4256146b963a781a02748a342c6b6e (diff) | |
download | rails-22f6189a55b3a096e91d3ec3a97cf5114fc93b72.tar.gz rails-22f6189a55b3a096e91d3ec3a97cf5114fc93b72.tar.bz2 rails-22f6189a55b3a096e91d3ec3a97cf5114fc93b72.zip |
DRY up try/try!
Diffstat (limited to 'activesupport')
-rw-r--r-- | activesupport/lib/active_support/core_ext/object/try.rb | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/activesupport/lib/active_support/core_ext/object/try.rb b/activesupport/lib/active_support/core_ext/object/try.rb index 112ec05e15..09b8a19789 100644 --- a/activesupport/lib/active_support/core_ext/object/try.rb +++ b/activesupport/lib/active_support/core_ext/object/try.rb @@ -44,22 +44,18 @@ class Object # +SimpleDelegator+ will delegate +try+ to the target instead of calling it on # delegator itself. def try(*a, &b) - if a.empty? && block_given? - if b.arity.zero? - instance_eval(&b) - else - yield self - end - else - public_send(*a, &b) if respond_to?(a.first) - end + try!(*a, &b) if a.empty? || respond_to?(a.first) end # Same as #try, but will raise a NoMethodError exception if the receiving is not nil and # does not implement the tried method. def try!(*a, &b) if a.empty? && block_given? - try(*a, &b) + if b.arity.zero? + instance_eval(&b) + else + yield self + end else public_send(*a, &b) end |