在 rails 服务器完全启动工头后,如何启动 Procfile 进程?
How can I start a Procfile process, after the rails server has completely started up with foreman?
我有一个 rails 应用程序,它 运行 与 ruby 脚本并行。这是一个 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完全启动后订阅者进程?
您可以使用 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
我有一个 rails 应用程序,它 运行 与 ruby 脚本并行。这是一个 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完全启动后订阅者进程?
您可以使用 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