重启后Rails 3 delayed_job启动

时间:2012-02-17 00:31:30

标签: ruby-on-rails ruby delayed-job

我在apache下部署了我的rails站点。 apache作为服务运行。现在我在那里添加了delayed_job并且工作正常。

现在我想和apache一起启动工作人员,例如,重新启动服务器后,我的站点和工作人员都准备好了,所以我不必登录并输入“sudo RAILS_ENV = production script / delayed_job -n 2开始“。

另一个问题是每当我想要启动delayed_job时我都要使用“sudo”......

知道如何避免这两个问题吗?

感谢您的帮助。

3 个答案:

答案 0 :(得分:3)

使用whenever gem及其' every:reboot'功能。在schedule.rb中:

environment = ENV['RAILS_ENV'] || 'production'
every :reboot do
    command "cd #{path} && #{environment_variable}=#{environment} bin/delayed_job --pool=queue1:2, --pool=queue2,queue3:1 restart"
end

答案 1 :(得分:1)

你能创建一个shell脚本来执行你需要的命令吗?

#!/bin/sh

# stop delayed job

# restart apache
apachectl restart

# start delayed job
sudo RAILS_ENV=production script/delayed_job -n 2 start

答案 2 :(得分:1)

听起来你想在启动硬件后apache启动后自动启动delayed_job。如果是这种情况,您需要在/etc/init.d/etc/rc.d/init.d中编写初始化脚本(取决于您的系统)。这个页面给出了一个很好的入门:

http://www.philchen.com/2007/06/04/quick-and-dirty-how-to-write-and-init-script