Delayed_job nie działa

Witam.

Kilka dni temu zakładałem podobny wątek mimo kilku odpowiedzi nie udało mi się rozwiązać problemu.

Mam kontroller z takim kodem:

[code=ruby]class OverviewController < ApplicationController

def index
x = rand(1000)

y = rand(10)
sleep y
a = Ev.new
a.num = 1 
a.th = x 
a.rand = y
a.save

yy = rand(10)
sleep yy
b = Ev.new
b.num = 2 
b.th = x 
b.rand = yy
b.save

yyy = rand(10)
sleep yyy
c = Ev.new
c.num = 3 
c.th = x 
c.rand = yyy
c.save

end
handle_asynchronously :index
end[/code]
Jeśli zakomentuje linię handle_asynchronously :index to w Ev pojawiają się trzy rekordy.
Jeśli linia handle_asynchronously :index jest odkomentowana to się nie pojawiają, pomimo że w tabeli delayed_jobs jakies rekordy się pojawiają i po chwili znikają.

Chcę aby klikając np. 3 razy localhost:3000/overview w Tabeli Ev pojawiły się rekordy odpowiednio wymieszane w zależności od losowanych wartości.

Rails 3.0.3, delayed_job 2.1.2 (https://github.com/collectiveidea/delayed_job.git), linux

Najpierw na jednej konsoli odpalam rake jobs:work a na innej thin start.

Wszystko póki co dla testów.

Czy ktoś może wie gdzie popelniam błąd?

marazm i opętanie
ale ukradkiem będę zaglądał czy ktoś coś podpowiedział :slight_smile:

Jezu. Nie zamierzam nawet czytać tego kodu, wygląda na jeszcze bardziej ryjący banię od opowiadań H.P. Lovecrafta.

To nie jest kod do czytania tylko do sprawdzenia czy działa delayed job.

Weź napisz do tego jakiś prosty kod np.

class WelcomeNotification < Struct.new(:email) def perform Mailer.welcome_message(email).deliver end end
a w kontrolerze

Delayed::Job.enqueue WelcomeNotification.new('email')

i zobacz czy działa

Te stwierdzenia o ryciu bani są mocno przesadzone :slight_smile:

Możesz jeszcze wrzucić kod modelu?

W ogóle najlepiej jakbyś wrzucił cały projekt railsowy na githuba, byłoby o wiele prościej to sprawdzić :wink:

W modelu nie ma nic. Całości nie ma co wrzucać na githuba bo praktycznie to co napisałem tylko jest wpisane po to aby sprawdzić delayed_joba.

Hmm… to gdzie tam się dodają jakieś rzeczy do delayed_joba, chyba ślepnę na starość O_o

Myślę że linia handle_asynchronously :index załatwia to.
I to co jest w index wykonuje się za pomocą delayed_joba.
Błąd?

[quote=l0pez]Myślę że linia handle_asynchronously :index załatwia to.
I to co jest w index wykonuje się za pomocą delayed_joba.
Błąd?[/quote]
Nie wiem, nie znałem tej metody :slight_smile: Spojrzę w wolnej chwili.

jak wspomniałem, marazm i opętanie :slight_smile:

Używanie handle_asynchronously do akcji kontrolera chyba nie jest najlepszym rozwiązaniem…

delayed_job sprawiał mi problemy gdy weszły railsy 3

we wrześniu ubiegłego roku był daleki od enterprajs soluszyns

Problem przy przejściu na rails 3 był z samym generatorem delayed_job

Pobieram d_j z innego źródła

https://github.com/exempla/delayed_job

podepnij stąd i wygeneruj od nowa delayed_job

ma poprawiony generator dla rails 3

standardowe wywołanie

Delayed::Job.enqueue(...)

wspomniane już w tym wątku działa bez zarzutu w railsach 3.0.3

robi to o co Klient poprosił, w czasie znacznie lepszym niż zakładał

handle_asynchronously nie potrzebowałem i nie używam

Sorry, Twój przykład jest męczący dlatego opisałem swoją przeprawę z d_j