l0pez
December 28, 2010, 5:52pm
1
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?
czACha
December 28, 2010, 6:12pm
2
marazm i opętanie
ale ukradkiem będę zaglądał czy ktoś coś podpowiedział
Tomash
December 28, 2010, 9:33pm
3
Jezu. Nie zamierzam nawet czytać tego kodu, wygląda na jeszcze bardziej ryjący banię od opowiadań H.P. Lovecrafta.
l0pez
December 28, 2010, 9:54pm
4
To nie jest kod do czytania tylko do sprawdzenia czy działa delayed job.
ronin
December 28, 2010, 10:45pm
5
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
drogus
December 28, 2010, 11:18pm
6
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ć
l0pez
December 29, 2010, 6:18am
7
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.
drogus
December 29, 2010, 12:05pm
8
Hmm… to gdzie tam się dodają jakieś rzeczy do delayed_joba, chyba ślepnę na starość O_o
l0pez
December 29, 2010, 12:08pm
9
Myślę że linia handle_asynchronously :index załatwia to.
I to co jest w index wykonuje się za pomocą delayed_joba.
Błąd?
drogus
December 29, 2010, 1:10pm
10
[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 Spojrzę w wolnej chwili.
czACha
December 29, 2010, 1:50pm
11
jak wspomniałem, marazm i opętanie
radarek
December 31, 2010, 9:10am
12
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