Я работаю над сценарием начальной загрузки шеф-повара и пытаюсь заставить его работать в системах Windows или POSIX.В нем я пытаюсь запросить у chef-сервера роли и окружение.В окнах запросы могут занимать до 30 секунд, поэтому я пытаюсь запустить их параллельно и в фоновом режиме и сохранить значения, которые будут вызваны позже, когда я буду просить пользователя ввести другие данные, а затем в конечном итоге выбрать роль исреда возвращается из запросов.На всю жизнь я не могу понять, как заставить запросы запускаться в фоновом режиме без паузы основной программы.
Вот что у меня так далеко:
chef_role = `knife search role '*:*' -i`.split.map { |i| { name: i } }.sort_by! { |n| n[:name] }
chef_env = `knife search environment '*' -i`.split.map { |i| { name: i } }.sort_by! { |n| n[:name] }
# Parallel fetch chef resources
knife_search = [chef_role, chef_env]
par = []
i = 0
knife_search.each do |search|
par[i] = Thread.new do
search
end
i += 1
end
par.each(&:join)
puts "Test1 = #{chef_role.inspect} | Test2 = #{chef_env.inspect}"