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