我正在努力与领班开始。我的procfile看起来像这样:
web: bundle exec rails server thin -p $PORT -e $RACK_ENV
worker: bundle exec sidekiq
redis: bundle exec redis-server
faye: bundle exec rackup faye.ru -s thin -E production
当我运行bundle exec foreman start
web,worker和redis服务器都正常启动,但不是faye服务器。
在控制台中,我得到:10:53:56 faye.1 | started with pid 10907
然后再从faye开始。
如果我使用procfile中的命令运行faye服务器:bundle exec rackup faye.ru -s thin -E production
,则faye正确启动。我做错了什么?
答案 0 :(得分:2)
当你在本地运行时:
bundle exec rackup faye.ru -s thin -E production
rackup
将使用它的默认端口,即9292。
当它在Herkou上运行时,如果该端口已在使用中,它可能无法启动。就我所知,Heroku动态地将$PORT
变量分配给有效的自由端口。
我的猜测是,Faye要么在另一个端口上开始,要么根本不开始。
答案 1 :(得分:0)
看起来faye正常运行。尝试访问http://localhost:{PORT}/faye.js
以查看它是否正在响应。它应该与JS一起回来。调用faye服务器时,请确保使用正确的端口。一旦你开始提出请求,你就应该看到领工正在唾弃faye日志。
答案 2 :(得分:0)
这是Foreman的missing output问题。
如果您没有看到程序的任何输出,则可能会缓冲
stdout
。许多语言(如Ruby和Python)默认缓冲stdout
。
Faye没有设置$stdout.sync = true
,因此缺少输出。
前段时间我遇到了同样的问题并尝试修复它,但我的pull request被拒绝了。