metaprogramming/class_exec_block_named_like_a_caller_local.rb
tests/_examples/metaprogramming/class_exec_block_named_like_a_caller_local.rb in the metorex repository.
class Group
def self.context(&block)
Class.new(self).class_exec(&block)
end
def self.with_wrapper(&block)
context do
module_exec(&block)
end
end
with_wrapper { p [:ran, superclass.superclass] }
end
def run_in(klass, &block)
value = :caller_local
klass.class_exec(:argument) { |value| p value }
p value
end
run_in(Class.new)
Output:
[:ran, Object]
:argument
:caller_local