class Aruba::Processes::InProcess
Run command in your ruby process
‘InProcess` is not meant for direct use - `InProcess.new` - by users. Only it’s public methods are part of the public API of aruba, e.g. ‘#stdin`, `#stdout`.
@private
Attributes
@private
Public Class Methods
Source
# File lib/aruba/processes/in_process.rb, line 21 def self.match?(mode) mode == :in_process || (mode.is_a?(Class) && mode <= InProcess) end
Use only if mode is in_process
Source
# File lib/aruba/processes/in_process.rb, line 51 def initialize(cmd, exit_timeout, io_wait_timeout, working_directory, # rubocop:disable Metrics/ParameterLists environment = Aruba.platform.environment_variables.hash_from_env, main_class = nil, stop_signal = nil, startup_wait_time = 0) @cmd = cmd @argv = arguments @stdin = StringIO.new @stdout = StringIO.new @stderr = StringIO.new @kernel = FakeKernel.new super end
Calls superclass method
Aruba::Processes::BasicProcess::new
Public Instance Methods
Source
# File lib/aruba/processes/in_process.rb, line 114 def close_io(name) unless %i[stdin stdout stderr].include? name raise ArgumentError, 'Only stdin stdout and stderr are allowed to close' end get_instance_variable(name.to_sym).close end
Close io
Source
# File lib/aruba/processes/in_process.rb, line 134 def interactive? false end
Source
# File lib/aruba/processes/in_process.rb, line 130 def pid $PROCESS_ID end
Output pid of process
This is the PID of the ruby process! So be careful
Source
# File lib/aruba/processes/in_process.rb, line 65 def start raise 'You need to call aruba.config.main_class = YourMainClass' unless main_class @started = true Dir.chdir @working_directory do before_run new_env = environment.merge('PWD' => @working_directory) Aruba.platform.with_replaced_environment new_env do main_class.new(@argv, @stdin, @stdout, @stderr, @kernel).execute! end after_run yield self if block_given? end end
Start command
Source
# File lib/aruba/processes/in_process.rb, line 101 def stderr(*) @stderr.string end
Access stderr
Source
# File lib/aruba/processes/in_process.rb, line 91 def stdin @stdin.string end
Access stdin
Source
# File lib/aruba/processes/in_process.rb, line 96 def stdout(*) @stdout.string end
Access stdout
Source
# File lib/aruba/processes/in_process.rb, line 85 def stop(*) @started = false @exit_status = @kernel.exitstatus end
Stop command
Source
# File lib/aruba/processes/in_process.rb, line 123 def terminate stop end
Terminate program
Source
# File lib/aruba/processes/in_process.rb, line 109 def write(input) @stdin.write input end
Write strint to stdin
@param [String] input
Write string to stdin in