frontkick 0.4.8 → 0.4.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +4 -0
- data/example/spawn_opts.rb +4 -0
- data/lib/frontkick/command.rb +15 -1
- data/lib/frontkick/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 16a532fb426a342a5850b7b64badbcc69e66e718
|
4
|
+
data.tar.gz: d0e33fb6cab10d114c247f53d6b9ea309bf831f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 777ce58833f2764f2115bf012ffea28d9cb8d99fa3d596678a1c7664e1fb05503b37513fc281207813b36425878b6cce0c370b0d3d1ef9575450f3c9d9f82a4e
|
7
|
+
data.tar.gz: 05092c48d5d8c3972e0d50e966458ca45d895efc14f7ffcf4e1b6e1b0b66eb1f54dc03fdc5d94ec00820546b7ab5335b72e1b752666f4d9495425a1a0f2495fb
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -63,6 +63,10 @@ On receiving INT and TERM signal, kill the kicked child process before exiting
|
|
63
63
|
NOTE: This uses Kernel.trap inside.
|
64
64
|
NOTE: Shoud use `[]` form, otherwirse `sh -c 'sleep 100'` is ran, and frotkick kills sh process, but sleep process remains
|
65
65
|
|
66
|
+
### Spawn Options
|
67
|
+
|
68
|
+
Other options such as :chdir are treated as options of `Kernel.#spawn`. See http://ruby-doc.org/core-2.3.0/Kernel.html#method-i-spawn for available options.
|
69
|
+
|
66
70
|
### Hint: Redirect stderr to stdout
|
67
71
|
|
68
72
|
Frontkick itself does not aid anything, but you can do as
|
data/lib/frontkick/command.rb
CHANGED
@@ -17,11 +17,13 @@ module Frontkick
|
|
17
17
|
return Result.new(:stdout => command, :stderr => '', :exit_code => 0, :duration => 0)
|
18
18
|
end
|
19
19
|
|
20
|
+
spawn_opts = self.spawn_opts(opts)
|
21
|
+
|
20
22
|
lock_fd = file_lock(opts[:exclusive], opts[:exclusive_blocking]) if opts[:exclusive]
|
21
23
|
begin
|
22
24
|
::Timeout.timeout(opts[:timeout], Frontkick::TimeoutLocal) do # nil is for no timeout
|
23
25
|
duration = Benchmark.realtime do
|
24
|
-
stdin, out, err, wait_thr = Open3.popen3(*cmd_array)
|
26
|
+
stdin, out, err, wait_thr = Open3.popen3(*cmd_array, spawn_opts)
|
25
27
|
out_reader = Thread.new { out.read }
|
26
28
|
err_reader = Thread.new { err.read }
|
27
29
|
stdin.close
|
@@ -55,6 +57,18 @@ module Frontkick
|
|
55
57
|
Result.new(:stdout => stdout, :stderr => stderr, :exit_code => exit_code, :duration => duration)
|
56
58
|
end
|
57
59
|
|
60
|
+
# private
|
61
|
+
|
62
|
+
def self.spawn_opts(opts)
|
63
|
+
opts.dup.tap {|o|
|
64
|
+
o.delete(:timeout_kill)
|
65
|
+
o.delete(:exclusive)
|
66
|
+
o.delete(:exclusive_blocking)
|
67
|
+
o.delete(:timeout)
|
68
|
+
o.delete(:kill_child)
|
69
|
+
}
|
70
|
+
end
|
71
|
+
|
58
72
|
def self.trap_signal(pid)
|
59
73
|
trap :INT do
|
60
74
|
Process.kill(:TERM, pid)
|
data/lib/frontkick/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: frontkick
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Naotoshi Seo
|
@@ -70,6 +70,7 @@ files:
|
|
70
70
|
- example/dry_run.rb
|
71
71
|
- example/kill_child.rb
|
72
72
|
- example/run.rb
|
73
|
+
- example/spawn_opts.rb
|
73
74
|
- experiment/capture3_no_deadlock.rb
|
74
75
|
- experiment/cat_63k.rb
|
75
76
|
- experiment/cat_64k.rb
|