2013-02-09 58 views
6

我跟隨教程https://devcenter.heroku.com/articles/queuing-ruby-resque排隊並在Rails應用程序中運行後臺作業。排隊的作業後,它似乎並沒有因爲於控制檯運行任何工作,我可以看到這項工作尚未處理帶Resque的作業在Heroku上給出了「不知道如何構建任務」作業:「''

>Resque.info 
=> {:pending=>1, :processed=>0, :queues=>1, :workers=>0, :working=>0, :failed=>0, :servers=>["redis://dory.redistogo.com:9826/0"], :environment=>"production"} 

如果我嘗試做的(本地)

bundle exec rake jobs:work 

我得到

rake aborted! 
Don't know how to build task 'jobs:work' 

在Heroku上,如果我嘗試

我再次得到`不知道如何建設任務」

在我的Rake文件,我有require 'resque/tasks',在我Procfile我有

resque: env TERM_CHILD=1 bundle exec rake jobs:work 
resque: env TERM_CHILD=1 bundle exec rake jobs:work 

我有Resque和Redis的寶石在我的Gemfile,但不是delayed_job。

更新: 這裏是我的Rakefile:

#!/usr/bin/env rake 
require File.expand_path('../config/application', __FILE__) 
Guard::Application.load_tasks 

/lib/tasks是空的。我有一名應用程序/工作人員,我正在控制器中排隊。

回答

6

這似乎與Heroku沒有任何關係,如果它不在本地工作。你必須透露你的一些資源,以幫助人們幫助你。例如,你的Rakefile是什麼樣的?該文章中的演示應用程序defines one with a Rake task與任務。你有沒有定義你的耙子任務,並添加適當的寶石參考?

+0

我認爲你是對的,我可能錯過了一些東西。我已經添加了我的Rakefile。我會尋找resque文檔。讓我知道我可以提供哪些其他信息。 – highBandWidth 2013-02-09 15:57:55

+8

哦,我可能需要添加文件lib/tasks/resque.rake with'require'resque/tasks「 task」resque:setup「=>:environment'。當我回到我的電腦上時我會嘗試。 – highBandWidth 2013-02-09 16:08:09

+0

是的,我不得不定義的lib /任務的任務 – highBandWidth 2013-02-11 01:26:56

0

嘗試resque:work而不是jobs:work並查看是否存在所需的結果。

+0

給出同樣的錯誤:'不知道如何構建任務'resque:work'' – highBandWidth 2013-02-09 14:36:47

0

你只需要添加require 'resque/tasks'Rakefile,然後在命令行:

QUEUE=file_serve rake environment resque:work 

哪裏file_serve是你的作業的名稱(類是FileServeJob)。

查看文檔here - 我發現它們有點混亂,因爲設置和運行信息是在創建作業類之後出現的。

+0

注意,你也可以使用通配符'*'來代替作業名'file_serve'來運行所有作業 - 由於某種原因使用名稱時遇到麻煩。 – benjineer 2016-04-14 23:39:49

相關問題