Module: Vagrant::Util::StackedProcRunner
- Included in:
- Config::VMConfig::SubVM
- Defined in:
- lib/vagrant/util/stacked_proc_runner.rb
Overview
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.
Instance Method Summary collapse
-
#proc_stack ⇒ Array<Proc>
Returns the proc stack.
-
#push_proc(&block) ⇒ Object
Adds (pushes) a proc to the stack.
-
#run_procs!(*args) ⇒ Object
Executes all the procs on the stack, passing in the given arguments.
Instance Method Details
#proc_stack ⇒ Array<Proc>
Returns the proc stack. This should always be called as the accessor of the stack. The instance variable itself should never be used.
13 14 15 |
# File 'lib/vagrant/util/stacked_proc_runner.rb', line 13 def proc_stack @_proc_stack ||= [] end |
#push_proc(&block) ⇒ Object
Adds (pushes) a proc to the stack. The actual proc added here is not executed, but merely stored.
21 22 23 |
# File 'lib/vagrant/util/stacked_proc_runner.rb', line 21 def push_proc(&block) proc_stack << block end |
#run_procs!(*args) ⇒ Object
Executes all the procs on the stack, passing in the given arguments.
The stack is not cleared afterwords. It is up to the user of this
mixin to clear the stack by calling proc_stack.clear
.
28 29 30 31 32 |
# File 'lib/vagrant/util/stacked_proc_runner.rb', line 28 def run_procs!(*args) proc_stack.each do |proc| proc.call(*args) end end |