Method: Module#redirect_method

Defined in:
lib/core/facets/module/redirect_method.rb

#redirect_method(method_hash) ⇒ Object (private) Also known as: redirect

Redirect methods to other methods. This simply defines methods by the name of a hash key which calls the method with the name of the hash’s value.

class RedirectExample
  redirect_method :hi => :hello, :hey => :hello
  def hello(name)
    "Hello, #{name}."
  end
end

e = RedirectExample.new
e.hello("Bob")    #=> "Hello, Bob."
e.hi("Bob")       #=> "Hello, Bob."
e.hey("Bob")      #=> "Hello, Bob."

The above class definition is equivalent to …

class RedirectExample
  def hi(*args)
    hello(*args)
  end
  def hey(*args)
    hello(*args)
  end
  def hello
    puts "Hello"
  end
end

CREDIT: Trans



37
38
39
40
41
# File 'lib/core/facets/module/redirect_method.rb', line 37

def redirect_method( method_hash )
  method_hash.each do |targ,adv|
    define_method(targ) { |*args| send(adv,*args) }
  end
end