Class: EY::Serverside::Spawner
- Inherits:
-
Object
- Object
- EY::Serverside::Spawner
- Defined in:
- lib/engineyard-serverside/spawner.rb
Defined Under Namespace
Class Method Summary collapse
Instance Method Summary collapse
- #add(cmd, shell, server = nil) ⇒ Object
-
#initialize ⇒ Spawner
constructor
A new instance of Spawner.
- #run ⇒ Object
Constructor Details
#initialize ⇒ Spawner
Returns a new instance of Spawner.
13 14 15 16 |
# File 'lib/engineyard-serverside/spawner.rb', line 13 def initialize @poll_period = 0.5 @children = [] end |
Class Method Details
.run(cmd, shell, server = nil) ⇒ Object
7 8 9 10 11 |
# File 'lib/engineyard-serverside/spawner.rb', line 7 def self.run(cmd, shell, server = nil) s = new s.add(cmd, shell, server) s.run.first end |
Instance Method Details
#add(cmd, shell, server = nil) ⇒ Object
18 19 20 |
# File 'lib/engineyard-serverside/spawner.rb', line 18 def add(cmd, shell, server = nil) @children << Child.new(cmd, shell, server) end |
#run ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/engineyard-serverside/spawner.rb', line 22 def run @child_by_fd = {} @child_by_pid = {} @children.each do |child| pid, stdout_fd, stderr_fd = child.spawn @child_by_pid[pid] = child @child_by_fd[stdout_fd] = child @child_by_fd[stderr_fd] = child end while @child_by_pid.any? process wait end @children.map { |child| child.result } end |