Method: Module#redefine_method

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

#redefine_method(sym, aka = nil, &blk) ⇒ Object (private) Also known as: redef

Creates a new method for a pre-existing method.

If aka is given, then the method being redefined will first be aliased to this name.

class Greeter
  def hello ; "Hello" ; end
end

Greeter.new.hello   #=> "Hello"

class Greeter
  redefine_method( :hello, :hi ) do
    hi + ", friend!"
  end
end

Greeter.new.hello   #=> "Hello, friend!"

CREDIT: Trans



26
27
28
29
30
31
32
# File 'lib/core/facets/module/redefine_method.rb', line 26

def redefine_method(sym, aka=nil, &blk)
  alias_method(aka, sym) if aka
  ## prevent warning about method overwrite
  begin remove_method(sym) rescue NameError end
  ## define replacelemt method
  define_method(sym, &blk)
end