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
exit_status[R]
main_class[R]
@private
Public Class Methods
match?(mode)
click to toggle source
Use only if mode is in_process
# File lib/aruba/processes/in_process.rb, line 19 def self.match?(mode) mode == :in_process || (mode.is_a?(Class) && mode <= InProcess) end
new(cmd, exit_timeout, io_wait_timeout, working_directory, environment = Aruba.platform.environment_variables.hash_from_env, main_class = nil, stop_signal = nil, startup_wait_time = 0)
click to toggle source
Calls superclass method
Aruba::Processes::BasicProcess::new
# File lib/aruba/processes/in_process.rb, line 49 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
Public Instance Methods
close_io(name)
click to toggle source
Close io
# File lib/aruba/processes/in_process.rb, line 111 def close_io(name) unless [: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
interactive?()
click to toggle source
# File lib/aruba/processes/in_process.rb, line 131 def interactive? false end
pid()
click to toggle source
Output pid of process
This is the PID of the ruby process! So be careful
# File lib/aruba/processes/in_process.rb, line 127 def pid $PROCESS_ID end
start() { |self| ... }
click to toggle source
Start command
# File lib/aruba/processes/in_process.rb, line 63 def start raise "You need to call aruba.config.main_class = YourMainClass" unless main_class @started = true Dir.chdir @working_directory do before_run Aruba.platform.with_environment environment.merge("PWD" => @working_directory) do main_class.new(@argv, @stdin, @stdout, @stderr, @kernel).execute! end after_run yield self if block_given? end end
stderr(*)
click to toggle source
Access stderr
# File lib/aruba/processes/in_process.rb, line 98 def stderr(*) @stderr.string end
stdin()
click to toggle source
Access stdin
# File lib/aruba/processes/in_process.rb, line 88 def stdin @stdin.string end
stdout(*)
click to toggle source
Access stdout
# File lib/aruba/processes/in_process.rb, line 93 def stdout(*) @stdout.string end
stop(*)
click to toggle source
Stop command
# File lib/aruba/processes/in_process.rb, line 82 def stop(*) @started = false @exit_status = @kernel.exitstatus end
terminate()
click to toggle source
Terminate program
# File lib/aruba/processes/in_process.rb, line 120 def terminate stop end
write(input)
click to toggle source
Write strint to stdin
@param [String] input
Write string to stdin in
# File lib/aruba/processes/in_process.rb, line 106 def write(input) @stdin.write input end