簡體   English   中英

如何從Rails應用程序運行“ resque:work”耙任務?

[英]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上進行開發

  • 我將以WAR軟件包的形式將此應用程序部署到Tomcat服務器上的Windows 2008服務器
  • 我正在使用PostgreSQL作為數據庫。

這種方法將很難關閉您的老員工。 我建議使用稱為工頭的普通寶石來處理此問題。 我讓您看一下文檔,但是您的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM