Files
vagrant-libvirt/spec/support/binding_proc.rb
Dan Čermák db61946828 Add a simple Proc extension to support bindings (#1240)
This removes the dependency on the contextual_proc gem

Fixes: #1238
2021-04-03 14:41:44 +01:00

25 lines
554 B
Ruby

##
# A simple extension of the Proc class that supports setting a custom binding
# and evaluates everything in the Proc using the new binding.
class ProcWithBinding < Proc
##
# Set the binding for this instance
def apply_binding(bind, *args)
@binding = bind
instance_exec(*args, &self)
end
def method_missing(method, *args)
begin
method_from_binding = eval("method(#{method.inspect})", @binding)
return method_from_binding.call(*args)
rescue NameError
# fall through on purpose
end
super
end
end