Staram się wysłac jedno zadnia w tło za pomocą delayed_job.
Wygląda to tak:
OverviewCOntroller
[code=“ruby”]require ‘delayed_download.rb’
def all
Delayed::Job.enqueue DelayedDownload.new
end[/code]
delayed_download.rb
class DelayedDownload
def perform
#Tu kod który zaciąga dane z innego serwisu. Nie przekazuje tu żadnych parametrów.
end
end
Po odpaleniu dostaję taki błąd:
wrong number of arguments (0 for 1)
wskazanie lidni błedu: OverviewController linia Delayed::Job.enqueue DelayedDownload.new
W czym jest problem, niby oczekiwany jest 1 parametr. Tylko gdzie?
def perform
tu moge wpisac farmazony a i tak aplikacja noie wywala błędu, wygląda jak by się to w ogóle nie wykonywało.
end
end[/code]
Co może być powodem że perform w ogóle sie nie wykonuje?
Ogólnie do pliku wchodzi, ale nie do perform.
Jak przed def perform wpiszę cokolwiek błędnego to wywala błąd jak za, to nie wywala błędu.
CO może być powodem.
To jest najprostsza aplikacja z wykożystaniem delayed_job, tak dla testu jak to działa.
irb(main):002:0> require 'delayed_download.rb'
=> ["DelayedDownload"]
irb(main):003:0> DelayedDownload.delay.new
=> #<Delayed::Backend::ActiveRecord::Job id: 36, priority: 0, attempts: 0, handl
er: "--- !ruby/struct:Delayed::PerformableMethod \nobject...", last_error: nil,
run_at: "2010-12-16 17:39:25", locked_at: nil, failed_at: nil, locked_by: nil, c
reated_at: "2010-12-16 17:39:25", updated_at: "2010-12-16 17:39:25">
irb(main):004:0>
i tez perform z delayed_download.rb się nie wykonuje, bo w def perform mam specjalnie zrobiony błąd a nie wywala mi go.