Module Forwardable
In: lib/forwardable.rb

The Forwardable module provides delegation of specified methods to a designated object, using the methods def_delegator and def_delegators.

For example, say you have a class RecordCollection which contains an array @records. You could provide the lookup method record_number(), which simply calls #[] on the @records array, like this:

  class RecordCollection
    extends Forwardable
    def_delegator :@records, :[], :record_number
  end

Further, if you wish to provide the methods size, #<<, and map, all of which delegate to @records, this is how you can do it:

  class RecordCollection
    # extends Forwardable, but we did that above
    def_delegators :@records, :size, :<<, :map
  end

Also see the example at forwardable.rb.

Methods

Attributes

debug  [RW]  force Forwardable to show up in stack backtraces of delegated methods

Public Instance methods

def_delegator(accessor, method, ali = method)
def_delegators(accessor, *methods)

Defines a method method which delegates to obj (i.e. it calls the method of the same name in obj). If new_name is provided, it is used as the name for the delegate method.

See the examples at Forwardable and forwardable.rb.

Shortcut for defining multiple delegator methods, but with no provision for using a different name. The following two code samples have the same effect:

  def_delegators :@records, :size, :<<, :map

  def_delegator :@records, :size
  def_delegator :@records, :<<
  def_delegator :@records, :map

See the examples at Forwardable and forwardable.rb.

To view or add comments on this documentation, please go to the API wiki.

[Validate]