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
.
Direct Known Subclasses
Defined Under Namespace
Classes: FakeKernel
Class Attribute Summary collapse
- .main_class ⇒ Object deprecated Deprecated.
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, #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 = ENV.to_hash.dup, main_class = nil, stop_signal = nil, startup_wait_time = 0) ⇒ InProcess
constructor
A new instance of InProcess.
-
#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, #before_run, #commandline, #content, #filesystem_status, #inspect, #output, #restart, #run!, #send_signal, #started?, #stopped?, #timed_out?, #wait
Constructor Details
#initialize(cmd, exit_timeout, io_wait_timeout, working_directory, environment = ENV.to_hash.dup, main_class = nil, stop_signal = nil, startup_wait_time = 0) ⇒ InProcess
Returns a new instance of InProcess.
48 49 50 51 52 53 54 55 56 57 |
# File 'lib/aruba/processes/in_process.rb', line 48 def initialize(cmd, exit_timeout, io_wait_timeout, working_directory, environment = ENV.to_hash.dup, 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 |
Class Attribute Details
.main_class ⇒ Object
42 43 44 |
# File 'lib/aruba/processes/in_process.rb', line 42 def main_class @main_class end |
Instance Attribute Details
#exit_status ⇒ Object (readonly)
Returns the value of attribute exit_status.
23 24 25 |
# File 'lib/aruba/processes/in_process.rb', line 23 def exit_status @exit_status end |
#main_class ⇒ Object (readonly)
46 47 48 |
# File 'lib/aruba/processes/in_process.rb', line 46 def main_class @main_class end |
Class Method Details
.match?(mode) ⇒ Boolean
Use only if mode is in_process
19 20 21 |
# File 'lib/aruba/processes/in_process.rb', line 19 def self.match?(mode) mode == :in_process || (mode.is_a?(Class) && mode <= InProcess) end |
Instance Method Details
#close_io(name) ⇒ Object
Close io
106 107 108 109 110 |
# File 'lib/aruba/processes/in_process.rb', line 106 def close_io(name) fail ArgumentError, 'Only stdin stdout and stderr are allowed to close' unless [:stdin, :stdout, :stderr].include? name get_instance_variable(name.to_sym).close end |
#pid ⇒ Object
Output pid of process
This is the PID of the ruby process! So be careful
120 121 122 |
# File 'lib/aruba/processes/in_process.rb', line 120 def pid $PROCESS_ID end |
#start ⇒ Object
Start command
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/aruba/processes/in_process.rb', line 60 def start fail "You need to call aruba.config.main_class = YourMainClass" unless main_class 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 ⇒ Object
Access stderr
93 94 95 |
# File 'lib/aruba/processes/in_process.rb', line 93 def stderr(*) @stderr.string end |
#stdin ⇒ Object
Access stdin
83 84 85 |
# File 'lib/aruba/processes/in_process.rb', line 83 def stdin @stdin.string end |
#stdout ⇒ Object
Access stdout
88 89 90 |
# File 'lib/aruba/processes/in_process.rb', line 88 def stdout(*) @stdout.string end |
#stop ⇒ Object
Stop command
77 78 79 80 |
# File 'lib/aruba/processes/in_process.rb', line 77 def stop(*) @started = false @exit_status = @kernel.exitstatus end |
#terminate ⇒ Object
Terminate program
113 114 115 |
# File 'lib/aruba/processes/in_process.rb', line 113 def terminate stop end |
#write(input) ⇒ Object
Write strint to stdin
101 102 103 |
# File 'lib/aruba/processes/in_process.rb', line 101 def write(input) @stdin.write input end |