frontkick 0.4.8 → 0.4.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|