在rails服务器完全启动工头后,如何启动Procfile进程?

时间:2017-01-09 20:13:50

标签: ruby-on-rails foreman procfile

我有一个与ruby脚本并行运行的rails应用程序。这是脚本是ruby-mqtt订阅者,基本上它通过mqtt协议侦听消息,然后与rails应用程序交互。

问题是,工头与rails服务器同时启动此过程,当有广播消息且服务器尚未完成启动过程时,脚本崩溃,并且工头用它杀死服务器。

这是示例Procfile:

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

目前的解决方法是运行rails服务器,当它完成启动时,从另一个终端或使用屏幕启动订户。

在服务器通过foreman start完全启动后,有没有办法运行订阅者进程?

1 个答案:

答案 0 :(得分:1)

在mqtt用户启动之前,您可以使用wait-for-it bash script等待tcp端口可用

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