Class: OpenC3::MultiMicroservice
- Inherits:
-
Microservice
- Object
- Microservice
- OpenC3::MultiMicroservice
- Defined in:
- lib/openc3/microservices/multi_microservice.rb
Instance Attribute Summary
Attributes inherited from Microservice
#count, #custom, #error, #logger, #microservice_status_thread, #name, #scope, #secrets, #state
Instance Method Summary collapse
Methods inherited from Microservice
#as_json, #initialize, #microservice_cmd, run, #setup_microservice_topic, #shutdown
Constructor Details
This class inherits a constructor from OpenC3::Microservice
Instance Method Details
#run ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/openc3/microservices/multi_microservice.rb', line 25 def run ARGV.each do |microservice_name| microservice_model = MicroserviceModel.get_model(name: microservice_name, scope: @scope) if microservice_model and microservice_model.enabled thread = Thread.new do cmd_line = microservice_model.cmd.join(' ') split_cmd_line = cmd_line.split(' ') filename = nil split_cmd_line.each do |item| if File.extname(item) == '.rb' filename = item break end end raise "Could not determine class filename from '#{cmd_line}'" unless filename OpenC3.set_working_dir(microservice_model.work_dir) do require File.join(microservice_model.work_dir, filename) end klass = filename.filename_to_class_name.to_class klass.run(microservice_model.name) end ThreadManager.instance.register(thread) end end ThreadManager.instance.monitor ThreadManager.instance.shutdown end |