我正在尝试运行在heroku上运行的deamon进程。
无框架的应用程序只是一个ruby脚本,在启动后监视我的twitter流,如果有一张带有照片的推文,则将其发布在tumblr上。
本地运行得很好,但是当我在heroku上运行它时它就会立即崩溃。
heroku[worker.1]: Starting process with command `bundle exec ruby twitter-to-tumblr.rb start`
heroku[worker.1]: State changed from starting to up
heroku[worker.1]: Process exited with status 0
heroku[worker.1]: State changed from up to crashed
我是红宝石和heroku的新手,我在这里遗漏了一些东西,非常感谢任何帮助。
谢谢
答案 0 :(得分:0)
您需要确保该父进程不会退出。您的代码很可能使用PID分配守护进程,然后父进程以状态0退出。状态为0表示程序已完成且一切正常。 Heroku只知道你要求它完成的过程,如果你保持父进程,它应该工作。然后父母也可以处理孩子的信号处理。
根据你的procfile命令,我猜你正在使用'daemons'gem来处理守护进程。您可以通过将ontop选项传递给run命令来保持父运行。这可以防止父母退出:
Daemons.run_proc('tweetzilla', {:ontop => true}) do
# => long running code here.
end