1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
module MethodDefiner
def define_instance_method(object, method_symbol, &block)
object.singleton_class.send(:define_method, method_symbol, block)
end
def replace_instance_method(object, method_symbol, &block)
raise "Cannot replace #{method_symbol} as #{self} does not respond to it." unless object.respond_to?(method_symbol)
define_instance_method(object, method_symbol, &block)
end
def define_instance_accessor(object, *symbols)
symbols.each { |symbol| object.singleton_class.send(:attr_accessor, symbol) }
end
end
|