Class: Vedeu::Distributed::Subprocess
- Inherits:
-
Object
- Object
- Vedeu::Distributed::Subprocess
- Defined in:
- lib/vedeu/distributed/subprocess.rb
Overview
Instance Attribute Summary collapse
- #application ⇒ Vedeu::TestApplication readonly protected
- #pid ⇒ Fixnum readonly protected
Class Method Summary collapse
Instance Method Summary collapse
- #command ⇒ String private
-
#execute! ⇒ Array
:nocov:.
- #file_close ⇒ NilClass private
- #file_name ⇒ String private
- #file_open ⇒ File (also: #file) private
-
#file_path ⇒ Object
private
return [String].
-
#file_unlink ⇒ Fixnum
private
The number of files removed; 1.
-
#file_write ⇒ Fixnum
private
The number of bytes written.
-
#initialize(application) ⇒ Vedeu::Distributed::Subprocess
constructor
Returns a new instance of Vedeu::Distributed::Subprocess.
-
#kill ⇒ void
Sends the KILL signal to the process.
-
#timestamp ⇒ Object
private
return [Fixnum].
Constructor Details
#initialize(application) ⇒ Vedeu::Distributed::Subprocess
Returns a new instance of Vedeu::Distributed::Subprocess.
19 20 21 22 |
# File 'lib/vedeu/distributed/subprocess.rb', line 19 def initialize(application) @application = application @pid = nil end |
Instance Attribute Details
#application ⇒ Vedeu::TestApplication (readonly, protected)
52 53 54 |
# File 'lib/vedeu/distributed/subprocess.rb', line 52 def application @application end |
#pid ⇒ Fixnum (readonly, protected)
56 57 58 |
# File 'lib/vedeu/distributed/subprocess.rb', line 56 def pid @pid end |
Class Method Details
.execute!(application) ⇒ Object
11 12 13 |
# File 'lib/vedeu/distributed/subprocess.rb', line 11 def self.execute!(application) new(application).execute! end |
Instance Method Details
#command ⇒ String (private)
61 62 63 |
# File 'lib/vedeu/distributed/subprocess.rb', line 61 def command "ruby #{file_path}".freeze end |
#execute! ⇒ Array
:nocov:
26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/vedeu/distributed/subprocess.rb', line 26 def execute! file_open && file_write && file_close @pid = fork do exec(file_path) end Process.detach(@pid) self end |
#file_close ⇒ NilClass (private)
71 72 73 |
# File 'lib/vedeu/distributed/subprocess.rb', line 71 def file_close file.close end |
#file_name ⇒ String (private)
92 93 94 |
# File 'lib/vedeu/distributed/subprocess.rb', line 92 def file_name "/tmp/foo_#{}".freeze end |
#file_open ⇒ File (private) Also known as: file
86 87 88 |
# File 'lib/vedeu/distributed/subprocess.rb', line 86 def file_open @file ||= File.new(file_name, 'w', 0755) end |
#file_path ⇒ Object (private)
return [String]
81 82 83 |
# File 'lib/vedeu/distributed/subprocess.rb', line 81 def file_path file.path end |
#file_unlink ⇒ Fixnum (private)
Returns The number of files removed; 1.
76 77 78 |
# File 'lib/vedeu/distributed/subprocess.rb', line 76 def file_unlink File.unlink(file_name) end |
#file_write ⇒ Fixnum (private)
Returns The number of bytes written.
66 67 68 |
# File 'lib/vedeu/distributed/subprocess.rb', line 66 def file_write file.write(application) end |
#kill ⇒ void
This method returns an undefined value.
Sends the KILL signal to the process.
42 43 44 45 46 |
# File 'lib/vedeu/distributed/subprocess.rb', line 42 def kill Process.kill('KILL', pid) file_unlink end |
#timestamp ⇒ Object (private)
return [Fixnum]
97 98 99 |
# File 'lib/vedeu/distributed/subprocess.rb', line 97 def @timestamp ||= Time.now.to_i end |