2017-01-09 11 views
0

У меня есть приложение rails, которое работает параллельно с рубиновым скриптом. Это скрипт является подписчиком ruby-mqtt, в основном он прослушивает сообщения по протоколу mqtt, а затем взаимодействует с приложением rails.Как запустить процесс Procfile после того, как сервер rails полностью запущен с мастером?

Проблема заключается в том, что мастер запускает этот процесс одновременно с сервером рельсов, а когда есть сообщения, которые транслируются, а сервер еще не завершил процесс запуска, сценарий аварийно завершает работу, а бригадир убивает его сервером.

Это пример PROCFILE:

server: rails s -p 3000 -b 0.0.0.0 
mqtt_subscriber: ruby ./mqtt/subscribers/mqtt_subscriber.rb 

В настоящее время обходного пути, чтобы запустить сервер рельсов и когда она заканчивает запуск, запуск абонента от другого терминала или с помощью экрана.

Есть ли способ запустить процессы подписчика после того, как сервер полностью запущен через запуск мастера?

ответ

1

Вы можете использовать wait-for-it bash script ждать TCP-порт, чтобы стать доступным, прежде чем MQTT абонент начинает

server: rails s -p 3000 -b 0.0.0.0 
mqtt_subscriber: wait-for-it.sh -t 0 localhost:3000 -- ruby ./mqtt/subscribers/mqtt_subscriber.rb 

 Смежные вопросы

  • Нет связанных вопросов^_^