Class: NoradBeacon::Runner
- Inherits:
-
Object
- Object
- NoradBeacon::Runner
- Defined in:
- lib/norad_beacon/runner.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#exit_code ⇒ Object
readonly
Returns the value of attribute exit_code.
-
#result_set ⇒ Object
readonly
Returns the value of attribute result_set.
Class Method Summary collapse
-
.results_file ⇒ Object
Class method to return results file.
Instance Method Summary collapse
-
#execute(stdout_results = false) ⇒ Object
Execute the command.
-
#initialize(prog, args, timeout = 600) ⇒ NoradBeacon::Runner
constructor
Initialize an instance of the Runner class.
-
#parse_results {|raw_results| ... } ⇒ Object
Parse the results stored in the results file.
Constructor Details
#initialize(prog, args, timeout = 600) ⇒ NoradBeacon::Runner
Initialize an instance of the Runner class
20 21 22 23 24 25 26 27 |
# File 'lib/norad_beacon/runner.rb', line 20 def initialize(prog, args, timeout = 600) raise ArgumentError, 'args must be an Array' unless args.is_a?(Array) @prog = prog @timeout = timeout @result_set = NoradBeacon::ResultSet.new @args = format_args(args) @exit_code = nil end |
Instance Attribute Details
#exit_code ⇒ Object (readonly)
Returns the value of attribute exit_code.
7 8 9 |
# File 'lib/norad_beacon/runner.rb', line 7 def exit_code @exit_code end |
#result_set ⇒ Object (readonly)
Returns the value of attribute result_set.
7 8 9 |
# File 'lib/norad_beacon/runner.rb', line 7 def result_set @result_set end |
Class Method Details
.results_file ⇒ Object
Class method to return results file
10 11 12 |
# File 'lib/norad_beacon/runner.rb', line 10 def self.results_file @results_fn ||= "/tmp/norad.results.#{Time.now.strftime('%Y%m%d-%H%M%S')}" end |
Instance Method Details
#execute(stdout_results = false) ⇒ Object
Execute the command
30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/norad_beacon/runner.rb', line 30 def execute(stdout_results = false) process = ChildProcess.build(@prog, *@args) set_child_proc_io(process, stdout_results) process.start begin process.poll_for_exit(@timeout) rescue ChildProcess::TimeoutError puts 'Beacon Timeout reached. Stopping the process...' process.stop # tries increasingly harsher methods to kill the process. end @exit_code = process.exit_code end |
#parse_results {|raw_results| ... } ⇒ Object
Parse the results stored in the results file
44 45 46 47 48 |
# File 'lib/norad_beacon/runner.rb', line 44 def parse_results raw_results = File.open(self.class.results_file, 'r') yield raw_results raw_results.close end |