Jak powinno to wyglądać - job w rake task

Hej,

Chcę zrobić task, który będzie odpalany z crona - jego zadanie będzie zalogowanie się na skrzynkę email - pobranie nieprzeczytanych maili i ich obróbka. Pasuje mi tu zrobienie job’a - ale nie wiem czy tak będzie rails way jeżeli zrobię Job a w tasku po prostu go wywołam . Czyli rake task będzie miał tylko i wyłącznie wywołanie Joba (no - ewentualnie sprawdzenie, czy Job się własnie nie wykonuje)
Nie chcę tworzyć u siebie złych nawyków…

rails runner jest znacznie prostrzy od taska o ile Twoje railsy się kwalifikują ? :blush:

whenever dla cron jobów

A pilnowanie by zadanie nie uruchomić ponownie… to zależy czym robisz async - sama kolejka ma coś do skonfigurowania “pilnowania unikalności zadań”

Ok, whenever kiedyś widziałem - ale nie pamiętałem, że może on odpalać joby - będzie git. Co do kolejki to jeszcze doczytam - zatrudnię do tego sidekiq. rails runner nie znałem :wink:

Biorąc pod uwagę charakter zadania… sprawdzanie poczty… jest mała alternatywa dla cron. Przecież samo zadanie może po zakończeniu przetwarzania dorzucić siebie do kolejki z czasem wykonania +1h w przyszłość czy inny interwał

Traktuj rake task tylko i wyłącznie jako miejsce gdzie wywołasz tylko jakiś serwis/klasę (albo zakolejkujesz joba w tle który to zrobi) w której zawrzesz logikę.

Rake taski wywołujesz poza web request lifecycle, czyli “w tle”. Dlatego jedyne zadanie raka nie powinno być wrzuceniem Joba na kolejkę. Raczej zgadzam się z @raderek w kwestii używania rake w taki sposób, że odpalasz w nim np. serwis, ponieważ wtedy prościej testować logikę. Jednak nie jest to regułą.