我正在尝试在 Heroku 上执行一个没有 ruby 守护程序框架的应用程序,但是在尝试执行工作程序后它崩溃了:
heroku[worker.1]: State changed from crashed to starting
heroku[worker.1]: Starting process with command `bundle exec rake twitter: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
该应用程序基本上通过一堆 API 收集数据,并将其保存在远程 MongoHQ 实例上。
rake 任务是:
dir_path = File.expand_path('../', __FILE__)
namespace :twitter do
desc 'Start Twitter daemon'
task :start do
exec "#{dir_path}/bin/autana start"
end
...
end
Procfile 非常简单:worker: bundle exec rake twitter:start
执行守护进程的代码如下:
#!/usr/bin/env ruby
require 'daemons'
require File.expand_path('../../lib/autana', __FILE__)
Daemons.run_proc('autana', multiple: true, no_pidfiles: true) do
client = Autana::Client::Twitter.new
client.collect
end
有任何想法吗?