Class: ReactEmailRails::RenderModes::Subprocess::CommandRunner
- Inherits:
-
Object
- Object
- ReactEmailRails::RenderModes::Subprocess::CommandRunner
- Defined in:
- lib/react_email_rails/render_modes/subprocess/command_runner.rb
Defined Under Namespace
Classes: Result
Class Method Summary collapse
Instance Method Summary collapse
- #capture ⇒ Object
-
#initialize(command:, input:, timeout:) ⇒ CommandRunner
constructor
A new instance of CommandRunner.
Constructor Details
#initialize(command:, input:, timeout:) ⇒ CommandRunner
Returns a new instance of CommandRunner.
10 11 12 13 14 |
# File 'lib/react_email_rails/render_modes/subprocess/command_runner.rb', line 10 def initialize(command:, input:, timeout:) @command = command @input = input @timeout = timeout end |
Class Method Details
.capture(command, input: nil, timeout:) ⇒ Object
5 6 7 |
# File 'lib/react_email_rails/render_modes/subprocess/command_runner.rb', line 5 def capture(command, input: nil, timeout:) new(command:, input:, timeout:).capture end |
Instance Method Details
#capture ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/react_email_rails/render_modes/subprocess/command_runner.rb', line 16 def capture Open3.popen3(*command, pgroup: true) do |stdin, stdout, stderr, wait_thread| out_reader = read_async(stdout) err_reader = read_async(stderr) write_input(stdin) if wait_thread.join(timeout).nil? terminate_process("KILL", wait_thread.pid) wait_thread.join out_reader.kill err_reader.kill raise(Timeout::Error) end Result.new(stdout: out_reader.value, stderr: err_reader.value, status: wait_thread.value) end end |