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  |