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 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