try is an object extension

This commit is contained in:
Jeremy Kemper
2009-03-21 04:33:15 -07:00
parent baf73e19a6
commit bca510cec2
2 changed files with 5 additions and 4 deletions

View File

@@ -1,5 +1,6 @@
require 'active_support/core_ext/object/blank'
require 'active_support/core_ext/object/duplicable'
require 'active_support/core_ext/object/try'
require 'active_support/core_ext/object/conversions'
require 'active_support/core_ext/object/extending'

View File

@@ -1,8 +1,8 @@
class Object
# Invokes the method identified by the symbol +method+, passing it any arguments
# Invokes the method identified by the symbol +method+, passing it any arguments
# and/or the block specified, just like the regular Ruby <tt>Object#send</tt> does.
#
# *Unlike* that method however, a +NoMethodError+ exception will *not* be raised
# *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.
#
# ==== Examples
@@ -19,7 +19,7 @@ class Object
# Person.try(:find, 1)
# @people.try(:collect) {|p| p.name}
#--
# This method definition below is for rdoc purposes only. The alias_method call
# This method definition below is for rdoc purposes only. The alias_method call
# below overrides it as an optimization since +try+ behaves like +Object#send+,
# unless called on +NilClass+.
def try(method, *args, &block)
@@ -29,7 +29,7 @@ class Object
alias_method :try, :__send__
end
class NilClass
class NilClass #:nodoc:
def try(*args)
nil
end