Class: Nanoc::Extra::Piper
- Inherits:
-
Object
- Object
- Nanoc::Extra::Piper
- Defined in:
- lib/nanoc/extra/piper.rb
Defined Under Namespace
Classes: Error
Instance Method Summary (collapse)
-
- (Piper) initialize(params = {})
constructor
A new instance of Piper.
-
- (Object) run(cmd, input)
Constructor Details
- (Piper) initialize(params = {})
Returns a new instance of Piper
24 25 26 27 |
# File 'lib/nanoc/extra/piper.rb', line 24 def initialize(params={}) @stdout = params.fetch(:stdout, $stdout) @stderr = params.fetch(:stderr, $stderr) end |
Instance Method Details
- (Object) run(cmd, input)
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/nanoc/extra/piper.rb', line 32 def run(cmd, input) Open3.popen3(*cmd) do |stdin, stdout, stderr, wait_thr| stdout_thread = Thread.new { @stdout << stdout.read } stderr_thread = Thread.new { @stderr << stderr.read } if input stdin << input end stdin.close stdout_thread.join stderr_thread.join exit_status = wait_thr.value if !exit_status.success? raise Error.new(cmd, exit_status.to_i) end end end |