Skip to content

Instantly share code, notes, and snippets.

@rrees
Created January 23, 2009 07:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rrees/50926 to your computer and use it in GitHub Desktop.
Save rrees/50926 to your computer and use it in GitHub Desktop.
class MyClass
def my_method
puts "Hello"
end
end
def with_method(object, method_name, replacement_method, &block)
old_method = object.method(method_name)
object.class.class_eval { define_method method_name, replacement_method}
block.call
object.class.class_eval { define_method method_name, old_method }
end
my_object = MyClass.new
my_object.my_method
replacement_method = Proc.new { puts "Goodbye" }
with_method(my_object, 'my_method', replacement_method) { my_object.my_method }
my_object.my_method
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment