1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

don't raise NoMethodError the tried method doesn't exists

This commit is contained in:
dmathieu 2011-05-21 23:43:12 +02:00
parent f674aed150
commit 29a5aeaae9
2 changed files with 3 additions and 1 deletions

View file

@ -28,6 +28,8 @@ class Object
def try(*a, &b) def try(*a, &b)
if a.empty? && block_given? if a.empty? && block_given?
yield self yield self
elsif !a.empty? && !respond_to?(a.first)
nil
else else
__send__(*a, &b) __send__(*a, &b)
end end

View file

@ -99,7 +99,7 @@ class ObjectTryTest < Test::Unit::TestCase
def test_nonexisting_method def test_nonexisting_method
method = :undefined_method method = :undefined_method
assert !@string.respond_to?(method) assert !@string.respond_to?(method)
assert_raise(NoMethodError) { @string.try(method) } assert_nil @string.try(method)
end end
def test_valid_method def test_valid_method