Używam szyn łączących https://github.com/gottfrois/dashing-rails w moim projekcie. Uruchamia zadania rufus-scheduler na ładowaniu env szyn.
Po uruchomieniu testów integracyjnych (rspec, kapibara,selenium-driver), niektóre z moich testów losowo kończą się niepowodzeniem z powodu błędów limitu czasu rufus-scheduler. Czy istnieje sposób na wyciszenie błędów harmonogramu rufus lub całkowite wyłączenie rufus w środowisku testowym? Nie jestem fanem rails_env = test na mojej podstawie kodu, więc każde inne rozwiązanie byłoby mile widziane.
Przykładowe błędy wyglądają następująco:
{ 283064 rufus-scheduler intercepted an error:
283064 job:
283064 Rufus::Scheduler::EveryJob "10s" {}
283064 error:
283064 283064
283064 Timeout::Error
283064 Waited 3 sec
Odpowiedzi:
0 dla odpowiedzi № 1Rufus-scheduler #on_error może pomóc. Jest to udokumentowane w https://github.com/jmettraux/rufus-scheduler#rufusscheduleron_errorjob-error
Na przykład:
if rails_env == "test" # set the handler only when testing...
def Dashing.scheduler.on_error(job, error)
# keep silent, do nothing
end
end
Wygląda na to, że nie chcesz ustawiać środowiska Rails na „test” dla testu integracji, więc musisz znaleźć sposób na określenie, kiedy przesłonić metodę #on_error programu planującego, to jest twój problem.
Ponadto rufus-scheduler nie zgłasza instancjiLimit czasu :: Błąd, wywołuje instancje Rufus :: Scheduler :: TimeoutError, więc wyświetlane błędy nie są błędami rufus-scheduler, są jedynie przechwytywane przez rufus-scheduler.
Jak wspomniano powyżej, jako autorrufus-scheduler, nie napisałem rufus-scheduler, żeby czytać tytuły takie jak: „Rufus planer łamie testy integracyjne”, TWÓJ zestaw kodów psuje TWOJE testy integracyjne. Weź na siebie odpowiedzialność.