Class: Aruba::Processes::InProcess
- Inherits:
-
BasicProcess
- Object
- BasicProcess
- Aruba::Processes::InProcess
- Defined in:
- lib/aruba/processes/in_process.rb
Overview
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`.
Defined Under Namespace
Classes: FakeKernel
Instance Attribute Summary collapse
-
#exit_status ⇒ Object
readonly
Returns the value of attribute exit_status.
- #main_class ⇒ Object readonly
Attributes inherited from BasicProcess
#environment, #exit_timeout, #io_wait_timeout, #startup_wait_time, #stop_signal, #working_directory
Class Method Summary collapse
-
.match?(mode) ⇒ Boolean
Use only if mode is in_process.
Instance Method Summary collapse
-
#close_io(name) ⇒ Object
Close io.
-
#initialize(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) ⇒ InProcess
constructor
rubocop:disable Metrics/ParameterLists.
- #interactive? ⇒ Boolean
-
#pid ⇒ Object
Output pid of process.
-
#start ⇒ Object
Start command.
-
#stderr ⇒ Object
Access stderr.
-
#stdin ⇒ Object
Access stdin.
-
#stdout ⇒ Object
Access stdout.
-
#stop ⇒ Object
Stop command.
-
#terminate ⇒ Object
Terminate program.
-
#write(input) ⇒ Object
Write strint to stdin.
Methods inherited from BasicProcess
#after_run, #arguments, #before_run, #command, #commandline, #content, #empty?, #filesystem_status, #inspect, #output, #restart, #send_signal, #started?, #stopped?, #timed_out?, #wait
Constructor Details
#initialize(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) ⇒ InProcess
rubocop:disable Metrics/ParameterLists
51 52 53 54 55 56 57 58 59 60 61 62 |
# 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 |
Instance Attribute Details
#exit_status ⇒ Object (readonly)
Returns the value of attribute exit_status.
25 26 27 |
# File 'lib/aruba/processes/in_process.rb', line 25 def exit_status @exit_status end |
#main_class ⇒ Object (readonly)
49 50 51 |
# File 'lib/aruba/processes/in_process.rb', line 49 def main_class @main_class end |
Class Method Details
.match?(mode) ⇒ Boolean
Use only if mode is in_process
21 22 23 |
# File 'lib/aruba/processes/in_process.rb', line 21 def self.match?(mode) mode == :in_process || (mode.is_a?(Class) && mode <= InProcess) end |
Instance Method Details
#close_io(name) ⇒ Object
Close io
114 115 116 117 118 119 120 |
# 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 |
#interactive? ⇒ Boolean
134 135 136 |
# File 'lib/aruba/processes/in_process.rb', line 134 def interactive? false end |
#pid ⇒ Object
Output pid of process
This is the PID of the ruby process! So be careful
130 131 132 |
# File 'lib/aruba/processes/in_process.rb', line 130 def pid $PROCESS_ID end |
#start ⇒ Object
Start command
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
# 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 |
#stderr ⇒ Object
Access stderr
101 102 103 |
# File 'lib/aruba/processes/in_process.rb', line 101 def stderr(*) @stderr.string end |
#stdin ⇒ Object
Access stdin
91 92 93 |
# File 'lib/aruba/processes/in_process.rb', line 91 def stdin @stdin.string end |
#stdout ⇒ Object
Access stdout
96 97 98 |
# File 'lib/aruba/processes/in_process.rb', line 96 def stdout(*) @stdout.string end |
#stop ⇒ Object
Stop command
85 86 87 88 |
# File 'lib/aruba/processes/in_process.rb', line 85 def stop(*) @started = false @exit_status = @kernel.exitstatus end |
#terminate ⇒ Object
Terminate program
123 124 125 |
# File 'lib/aruba/processes/in_process.rb', line 123 def terminate stop end |
#write(input) ⇒ Object
Write strint to stdin
109 110 111 |
# File 'lib/aruba/processes/in_process.rb', line 109 def write(input) @stdin.write input end |