2012-10-18 105 views
0

新的Rails和非常新的延迟作业。延迟工作工人保持关闭?

得到一个应该在5分钟后触发。我终于得到它的工作,所以,如果我运行

rake jobs:work 

在我的终端,工作启动并正常工作。如果我使用CTRL-C并在终端中退出该操作,则延迟的作业将停止正常工作。这是我的本地服务器上的一两件事,另一个在Heroku上,在那里我有使用

我看着新的Heroku工具区并下载他们建议对人员进行维护,领班创业板启动延迟工作,但当我运行“工头开始”,我得到这个错误

ERROR: procfile does not exist 

我不知道procfile是什么,我怕花几乎每天调试我delayed_jobs动作之后突破的东西,我想要做到这一点是正确的,以确保它的工作,而不是找出一些后来破解的哈克修复 - 所以我想我应该问这个问题,但令人讨厌的VA它可能是gue。

我应该使用工头吗?还是无用的? (看到另一个SO问题)。我的procfile在哪里?我应该用它做什么?

感谢,

萨沙

回答

2

您应该使用procfile来设置您的Heroku进程,这是Heroku用来定义和控制进程的标准方法。

如果你还没有使用的procfile这一点,一切都将可能仍然是Heroku的工作,当你推一个Rails应用程序,既包括webworker过程增加了一些默认的进程。默认worker进程被设置为延迟作业。

工头是为了设置本地机器而使用相同的方法而开发的,但与Heroku服务不同,Foreman实际上需要一个procfile来控制Foreman开始工作时启动的服务,不知道如何设置默认值。

我建议创建一个放置在项目根目录下的procfile,以确保您的进程在本地计算机上以与Heroku相同的方式进行设置和操作。如果您想模拟Heroku自动设置的内容,请根据您是否使用Thin Web服务器(Heroku建议)将以下内容添加到procfile

在你的Gemfile薄:

web: bundle exec thin start -R config.ru -e $RACK_ENV -p $PORT 
worker: bundle exec rake jobs:work 

如果没有专用的网络服务器(例如,您正在使用的WEBrick,导轨默认):

web: bundle exec rails server -p $PORT 
worker: bundle exec rake jobs:work 

一旦该文件是在地方,你可以运行领班在您的本地机器上,它会自动启动您的Web服务器和delayed_job工作人员。

贯穿此过程只会影响在本地计算机上启动delayed_job。由于您正在运行与您当前使用的完全相同的命令bundle exec rake jobs:work,因此在本地或Heroku上应该不会影响您的dj操作。显然,一些测试是必需的,这是事实。

无工作是为在Heroku上扩展工人而设计的,因此在没有工作时您无需为此付费。它对procfile或定义如何实际启动dj工作进程没有影响。