module Vagrant::Util::StackedProcRunner

Represents the “stacked proc runner” behavior which is used a couple places within Vagrant. This allows procs to “stack” on each other, then all execute in a single action. An example of its uses can be seen in the {Config} class.

Public Instance Methods

proc_stack() click to toggle source

Returns the proc stack. This should always be called as the accessor of the stack. The instance variable itself should never be used.

@return [Array<Proc>]

# File lib/vagrant/util/stacked_proc_runner.rb, line 13
def proc_stack
  @_proc_stack ||= []
end
push_proc(&block) click to toggle source

Adds (pushes) a proc to the stack. The actual proc added here is not executed, but merely stored.

@param [Proc] block

# File lib/vagrant/util/stacked_proc_runner.rb, line 21
def push_proc(&block)
  proc_stack << block
end
run_procs!(*args) click to toggle source

Executes all the procs on the stack, passing in the given arguments. The stack is not cleared afterwards. It is up to the user of this mixin to clear the stack by calling ‘proc_stack.clear`.

# File lib/vagrant/util/stacked_proc_runner.rb, line 28
def run_procs!(*args)
  proc_stack.each do |proc|
    proc.call(*args)
  end
end