module ReloaderInterceptor::Wrapper::DSL

Public Instance Methods

define_instance_methods_using_class_name(dst, src) click to toggle source

@param [Class] dst Wrapping class @param [String] src Wrapped class

# File lib/reloader_interceptor/wrapper.rb, line 31
def define_instance_methods_using_class_name(dst, src)
  src_name = src.name

  public_methods    = src.public_instance_methods(false)
  protected_methods = src.protected_instance_methods(false)
  private_methods   = src.private_instance_methods(false)

  [*public_methods, *protected_methods, *private_methods].each do |method|
    dst.define_method method do |*args|
      klass = src_name.constantize
      klass.new(*@options).send(method, *args)
    end
  end

  dst.send(:protected, *protected_methods) if protected_methods.size > 0
  dst.send(:private,   *private_methods)   if private_methods.size > 0
end
define_singleton_methods_using_class_name(dst, src) click to toggle source

@param [Class] dst Wrapping class @param [String] src Wrapped class

# File lib/reloader_interceptor/wrapper.rb, line 8
def define_singleton_methods_using_class_name(dst, src)
  src_name = src.name

  src_singleton_class = src.singleton_class
  dst_singleton_class = dst.singleton_class

  public_methods    = src_singleton_class.public_instance_methods(false)
  protected_methods = src_singleton_class.protected_instance_methods(false)
  private_methods   = src_singleton_class.private_instance_methods(false)

  [*public_methods, *protected_methods, *private_methods].each do |method|
    dst_singleton_class.define_method method do |*args|
      klass = src_name.constantize
      klass.send(method, *args)
    end
  end

  dst_singleton_class.send(:protected, *protected_methods) if protected_methods.size > 0
  dst_singleton_class.send(:private,   *private_methods)   if private_methods.size > 0
end