aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/core_ext/module/delegation.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activesupport/lib/active_support/core_ext/module/delegation.rb')
-rw-r--r--activesupport/lib/active_support/core_ext/module/delegation.rb21
1 files changed, 13 insertions, 8 deletions
diff --git a/activesupport/lib/active_support/core_ext/module/delegation.rb b/activesupport/lib/active_support/core_ext/module/delegation.rb
index df8aefea5a..381181b2f4 100644
--- a/activesupport/lib/active_support/core_ext/module/delegation.rb
+++ b/activesupport/lib/active_support/core_ext/module/delegation.rb
@@ -1,14 +1,19 @@
class Module
# Provides a delegate class method to easily expose contained objects' methods
# as your own. Pass one or more methods (specified as symbols or strings)
- # and the name of the target object as the final <tt>:to</tt> option (also a symbol
- # or string). At least one method and the <tt>:to</tt> option are required.
+ # and the name of the target object via the <tt>:to</tt> option (also a symbol
+ # or string). At least one method and the <tt>:to</tt> option are required.
#
# Delegation is particularly useful with Active Record associations:
#
# class Greeter < ActiveRecord::Base
- # def hello() "hello" end
- # def goodbye() "goodbye" end
+ # def hello
+ # "hello"
+ # end
+ #
+ # def goodbye
+ # "goodbye"
+ # end
# end
#
# class Foo < ActiveRecord::Base
@@ -72,9 +77,9 @@ class Module
# invoice.customer_name # => "John Doe"
# invoice.customer_address # => "Vimmersvej 13"
#
- # If the object to which you delegate can be nil, you may want to use the
- # :allow_nil option. In that case, it returns nil instead of raising a
- # NoMethodError exception:
+ # If the delegate object is +nil+ an exception is raised, and that happens
+ # no matter whether +nil+ responds to the delegated method. You can get a
+ # +nil+ instead with the +:allow_nil+ option.
#
# class Foo
# attr_accessor :bar
@@ -124,7 +129,7 @@ class Module
#{to}.__send__(#{method.inspect}, *args, &block) # client.__send__(:name, *args, &block)
rescue NoMethodError # rescue NoMethodError
if #{to}.nil? # if client.nil?
- #{on_nil}
+ #{on_nil} # return # depends on :allow_nil
else # else
raise # raise
end # end