2013-02-09 32 views
6

Tôi đã làm theo hướng dẫn tại https://devcenter.heroku.com/articles/queuing-ruby-resque để xếp hàng và chạy công việc nền trong ứng dụng Rails. Sau khi xếp hàng các công việc, nó dường như không chạy bất kỳ các công việc từ trong giao diện điều khiển tôi có thể thấy công việc chưa được xử lýViệc làm với Resque cung cấp cho công việc "Không biết cách xây dựng công việc": công việc '"trên Heroku

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

Nếu tôi cố gắng làm (cục bộ)

bundle exec rake jobs:work 

tôi nhận được

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

On Heroku, nếu tôi cố gắng

tôi một lần nữa có được 'Không biết làm thế nào để xây dựng nhiệm vụ'

Trong Rakefile tôi, tôi có require 'resque/tasks' và trong Procfile của tôi, tôi có

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

Tôi có Resque và đá quý redis trong Gemfile của tôi, nhưng không bị trì hoãn_job.

Cập nhật: Đây là Rakefile tôi:

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

/lib/tasks trống. Tôi có một công nhân trong ứng dụng/công nhân mà tôi đang enqueueing trong một bộ điều khiển.

Trả lời

6

Điều này dường như không liên quan gì đến Heroku, nếu nó không hoạt động cục bộ. Bạn sẽ phải tiết lộ một số nguồn của bạn để giúp mọi người giúp bạn. Ví dụ, Rakefile của bạn trông như thế nào? Ứng dụng demo trong bài viết đó defines one with a Rake task với tác vụ. Bạn đã xác định công việc cào của mình và thêm các tham chiếu đá quý thích hợp chưa?

+0

Tôi nghĩ bạn nói đúng, có thể tôi đang thiếu thứ gì đó. Tôi đã thêm Rakefile của mình. Tôi sẽ xem xét các tài liệu resque. Hãy cho tôi biết tôi có thể cung cấp thông tin nào khác. – highBandWidth

+8

Ồ, tôi có thể cần phải thêm tập tin lib/tasks/resque.rake với 'require 'resque/tasks" tác vụ "resque: setup" =>: environment'. Tôi sẽ thử khi tôi trở lại máy tính của mình. – highBandWidth

+0

Vâng, tôi đã phải xác định nhiệm vụ trong lib/nhiệm vụ – highBandWidth

0

Hãy thử resque:work thay vì jobs:work và xem liệu chúng có phải là kết quả mong muốn hay không.

+0

Cung cấp cùng một lỗi: 'Không biết cách tạo lại tác vụ ': work'' – highBandWidth

0

Bạn chỉ cần thêm require 'resque/tasks' trong Rakefile của bạn, sau đó trên dòng lệnh:

QUEUE=file_serve rake environment resque:work 

đâu file_serve là tên của công việc của bạn (lớp sẽ FileServeJob).

Xem tài liệu here - Tôi thấy chúng hơi khó hiểu vì thông tin thiết lập và chạy đến sau khi tạo lớp công việc.

+0

Lưu ý rằng bạn cũng có thể sử dụng ký tự đại diện '*' thay cho tên công việc 'file_serve' để chạy tất cả các công việc - tôi gặp sự cố khi sử dụng tên vì một số lý do. – benjineer

Các vấn đề liên quan