elf 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/elf/child.rb +8 -1
- data/lib/elf/version.rb +1 -1
- data/spec/elf/process_spec.rb +20 -0
- metadata +1 -1
data/lib/elf/child.rb
CHANGED
@@ -28,7 +28,14 @@ module Elf
|
|
28
28
|
def fire
|
29
29
|
puts "Fired: #{@cmd} # #{@comment}"
|
30
30
|
fork_pid = ::Process.fork do
|
31
|
-
|
31
|
+
case @cmd
|
32
|
+
when String
|
33
|
+
exec @cmd
|
34
|
+
when Symbol
|
35
|
+
send @cmd
|
36
|
+
when Array
|
37
|
+
send @cmd[0], *@cmd[1..-1]
|
38
|
+
end
|
32
39
|
end
|
33
40
|
fake = fork{ "sleep 10" }
|
34
41
|
pid, @status = ::Process.waitpid2(fork_pid)
|
data/lib/elf/version.rb
CHANGED
data/spec/elf/process_spec.rb
CHANGED
@@ -119,4 +119,24 @@ describe Elf::Process do
|
|
119
119
|
end
|
120
120
|
(Time.now-start).to_i.must_equal(4)
|
121
121
|
end
|
122
|
+
|
123
|
+
it "should run Ruby method in background" do
|
124
|
+
start = Time.now
|
125
|
+
Elf::Process.new do |elf|
|
126
|
+
elf.fork([:sleep, 1], "async sleep")
|
127
|
+
elf.fork([:sleep, 1], "async sleep")
|
128
|
+
elf.fork([:sleep, 1], "async sleep")
|
129
|
+
end
|
130
|
+
(Time.now-start).to_i.must_equal(1)
|
131
|
+
end
|
132
|
+
|
133
|
+
it "should run Ruby method in background" do
|
134
|
+
start = Time.now
|
135
|
+
Elf::Process.new do |elf|
|
136
|
+
elf.sync([:sleep, 1], "async sleep")
|
137
|
+
elf.fork([:sleep, 1], "async sleep")
|
138
|
+
elf.fork([:sleep, 1], "async sleep")
|
139
|
+
end
|
140
|
+
(Time.now-start).to_i.must_equal(2)
|
141
|
+
end
|
122
142
|
end
|