24
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
|
# File 'lib/openc3/microservices/multi_microservice.rb', line 24
def run
@threads = []
ARGV.each do |microservice_name|
microservice_model = MicroserviceModel.get_model(name: microservice_name, scope: @scope)
@threads << 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(@work_dir) do
require_relative filename
end
klass = filename.filename_to_class_name.to_class
klass.run(microservice_model.name)
end
end
@threads.each do |thread|
thread.join
end
end
|