2013-02-09 15 views
6

I przestrzegać samouczek w https://devcenter.heroku.com/articles/queuing-ruby-resque do kolejki i uruchamiania zadań w tle w aplikacji Rails. Po kolejkowanie zadań, to nie wydaje się, aby uruchomić dowolny z pracy, ponieważ w konsoli widzę zadanie nie zostało przetworzonePraca z Resque daje „Nie wiem, jak zbudować zadanie«miejsc pracy: praca»” na Heroku

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

Gdy próbuję zrobić (lokalnie)

bundle exec rake jobs:work 

uzyskać

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

Na Heroku, jeśli staram

znowu dostać `Nie wiem, jak zbudować zadanie”

W moim Rakefile mam require 'resque/tasks' iw moim Procfile mam

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

mam Resque i klejnotów Redis w moim Gemfile, ale nie opóźnia się.

Aktualizacja: Oto moja Rakefile:

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

/lib/tasks jest pusty. Mam pracownika w app/workers, który zapisuję w kontrolerze.

Odpowiedz

6

nie wydają się mieć nic wspólnego z Heroku, jeśli to nie działa lokalnie. Musisz ujawnić część swojego źródła, aby pomóc ludziom w uzyskaniu pomocy. Na przykład jak wygląda Twój Rakefile? Aplikacja demo w tym artykule defines one with a Rake task z zadaniem. Czy zdefiniowałeś swoje zadanie rake i dodałeś odpowiednie odniesienia do klejnotów?

+0

Chyba masz rację, ja chyba czegoś brakuje. Dodałem mój Rakefile. Rozejrzę się po dokumentach resque. Daj mi znać, jakie inne informacje mogę podać. – highBandWidth

+8

Ohh, prawdopodobnie trzeba dodać plik lib/zadań/resque.rake z 'wymagają "Resque/zadania" zadania "Resque: Ustawienia"=>: environment'. Spróbuję, kiedy wrócę na swój komputer. – highBandWidth

+0

Tak, miałem do zdefiniowania zadania w lib/zadań – highBandWidth

0

Wypróbuj resque:work zamiast jobs:work i sprawdź, czy to pożądane wyniki.

+0

daje ten sam błąd: 'Nie znasz jak zbudować zadanie„Resque: work'' – highBandWidth

0

Wystarczy dodać require 'resque/tasks' w Rakefile, następnie w wierszu poleceń:

QUEUE=file_serve rake environment resque:work 

Gdzie file_serve to nazwa zadania (klasa byłaby FileServeJob).

Zobacz dokumentację: - Zauważyłem, że są nieco mylące, ponieważ informacje o konfiguracji i uruchomieniu przychodzą po utworzeniu klasy zadań.

+0

Uwaga możesz również użyć wieloznacznika '*' zamiast nazwy zadania 'file_serve' do uruchomienia wszystkich zadań - miałem kłopot z używaniem nazwy z jakiegoś powodu. – benjineer