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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3514cd020c4022cbe113d670b35b4a2b4112bf68
4
- data.tar.gz: 53aa5b300c7c725ad9c00eebf94590c7aa048045
3
+ metadata.gz: 16a532fb426a342a5850b7b64badbcc69e66e718
4
+ data.tar.gz: d0e33fb6cab10d114c247f53d6b9ea309bf831f7
5
5
  SHA512:
6
- metadata.gz: 7a91a20a9782fe17a69b09ac0d3e1c09b1a2fa47bc0ce66b1d2498e5ad9fc44faa88e4b6694ad637deacb72d16a0e3cb9159a7bbd46f062c1709ed4e3666a84b
7
- data.tar.gz: 630a6f90b0ce7d16f5d07b13e96b89928fe57ea90aecc766727a59279962919e49c1da6847b6d8e893068de43e9576dd98b99588d521b81629cb5f08e327a04e
6
+ metadata.gz: 777ce58833f2764f2115bf012ffea28d9cb8d99fa3d596678a1c7664e1fb05503b37513fc281207813b36425878b6cce0c370b0d3d1ef9575450f3c9d9f82a4e
7
+ data.tar.gz: 05092c48d5d8c3972e0d50e966458ca45d895efc14f7ffcf4e1b6e1b0b66eb1f54dc03fdc5d94ec00820546b7ab5335b72e1b752666f4d9495425a1a0f2495fb
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ # 0.4.9 (2016/01/22)
2
+
3
+ Enhancements:
4
+
5
+ - Support spawn options
6
+
1
7
  # 0.4.8 (2016/01/22)
2
8
 
3
9
  Fixes:
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
@@ -0,0 +1,4 @@
1
+ require 'frontkick'
2
+
3
+ result = Frontkick.exec(["pwd"], :chdir => '/')
4
+ puts result.stdout
@@ -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)
@@ -1,3 +1,3 @@
1
1
  module Frontkick
2
- VERSION = "0.4.8"
2
+ VERSION = "0.4.9"
3
3
  end
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.8
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