![](/img/trans.png)
[英]How to run “rake resque:work QUEUE=*” when Rails server boots?
[英]How to run 'resque:work' rake task from rails application?
遵循rails-cast( http://railscasts.com/episodes/271-resque?view=comments ),我能夠以類似worker和rake的任務來設置我的rails應用程序。
但是,按照rails-cast中的指定,一旦啟動Rails服務器,就必須在單獨的終端窗口中發出以下命令:
TERM_CHILD=1 QUEUES=* rake resque:work
這樣可以使我正常運行,而且沒有問題。 但是,我不想在終端上觸發rake命令(或編寫啟動shell腳本),而是想在應用程序啟動時從Rails本身發出此終端命令(TERM_CHILD = 1 QUEUES = * rake resque:work)在服務器上應用程序正常運行期間可用。
我正在學習Rails框架,因此,如果您能給我一些幫助,並讓我知道如何/在何處放置您可能會提供的代碼段,我將不勝感激。
提前非常感謝您。
這是我的環境規格:
我正在使用jruby(Java HotSpot(TM)64位服務器VM 1.7.0_72-b14 + jit [linux-amd64]上的jruby 1.7.16.1(1.9.3p392)2014-10-28 4e93f31)
Rails版本4.1.8
我正在LINUX ubuntu 14.04上進行開發
這種方法將很難關閉您的老員工。 我建議使用稱為工頭的普通寶石來處理此問題。 我讓您看一下文檔,但是您的Procfile看起來像:
web: rails s -p $PORT
resque: TERM_CHILD=1 QUEUES=* rake resque:work
通過在控制台中運行foreman
命令,您將能夠啟動rails和resque。 這也將使您輕松退出兩者。
根據OP的消息進行了更新:
require 'resque/tasks'
ENV['TERM_CHILD'] = 1
ENV['QUEUES'] = '*'
Thread.new { Rake::Task["resque:work"] }
出現Thread.new
是因為否則會導致應用程序的其余部分永遠無法加載。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.