aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport
diff options
context:
space:
mode:
authorAri Pollak <ajp@aripollak.com>2014-10-23 21:47:16 -0400
committerAri Pollak <ajp@aripollak.com>2014-10-23 21:47:16 -0400
commit22f6189a55b3a096e91d3ec3a97cf5114fc93b72 (patch)
treeec14cda8a10636d06e6e98b5fa0429ab4d45f721 /activesupport
parentbe49ec4b1f4256146b963a781a02748a342c6b6e (diff)
downloadrails-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.rb16
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