删除Resque工作者类缓存,并在每次更改代码时避免工作程序重新启动

时间:2013-09-16 13:33:04

标签: ruby-on-rails asynchronous resque

我有一个代码在Rails中推送resque作业。

在那个职业班里,我唯一能做的就是

Resque.logger.info("Hello");

启动Resque工作人员并对作业代码文件进行更改后,例如:

Resque.logger.info("Can I see this?");

我无法看到Resque记录器中反映的更改,除非我重新启动我的工作人员,否则仍会显示“Hello”。 有没有办法避免每次我更改我的作业文件时重新启动resque工作者。简而言之,我希望动态地能够更改我的代码,并且可能运行更快的命令来反映我的chagnes,以便处理下一个作业。

我也保留了

config.cache_classes = false

在我的所有环境配置文件中。

1 个答案:

答案 0 :(得分:0)

我认为你不能避免它。但是如果你有很多工人,你可以使用foreman只用一个命令来启动它们。

使用foreman,您可以声明运行应用程序所需的各种过程。

首先,安装领班:gem install foreman

然后,创建名为Procfile的文件(没有任何扩展名)。

Procfile

worker-name1: bundle exec rake resque:work QUEUE=*
worker-name2: bundle exec rake resque:work QUEUE=*..

要启动它,请输入以下行:foreman start

您将看到如下输出:

17:21:48 worker-name1.1 | started with pid 20571
17:21:48 worker-name2.1 | started with pid 20573

https://github.com/ddollar/foreman

http://blog.daviddollar.org/2011/05/06/introducing-foreman.html