module CarryOut::Cloaker

Public Instance Methods

cloaker(binding = nil, &b) click to toggle source
# File lib/carry_out/cloaker.rb, line 6
def cloaker(binding = nil, &b)
  meth = self.class.class_eval do
    define_method :cloaker_, &b
    meth = instance_method :cloaker_
    remove_method :cloaker_
    meth
  end
  
  with_previous_context(binding || b.binding) { meth.bind(self).call }
end
method_missing(method, *args, &block) click to toggle source
Calls superclass method
# File lib/carry_out/cloaker.rb, line 24
def method_missing(method, *args, &block)
  if @previous_context
    @previous_context.send(method, *args, &block)
  else
    super
  end
end
with_previous_context(binding, &block) click to toggle source
# File lib/carry_out/cloaker.rb, line 17
def with_previous_context(binding, &block)
  @previous_context = binding.eval('self')
  result = block.call
  @previous_context = nil
  result
end