Frage

Gibt es ohnehin, um eine einfache Aufgabenplanung innerhalb einer Rails -App zu erstellen? Es gibt Code -Teile, die ich jede Stunde oder jeden Tag oder jede Woche laufen möchte. Ich möchte sie nicht in separate Skripte unterteilen, die ich dann über Cron -Jobs planen muss. Wenn ich das tun würde, muss ich mich daran erinnern, die Skripte zu sichern, und wenn ich einen Server wieder aufbauen muss, muss ich alle Cron -Jobs wieder hinzufügen, es scheint nur ein bisschen chaotisch für das, was ich brauche.

Ich wünschte, ich könnte einfach einen Job irgendwo in meiner Rails -App planen und sie auf magische Weise laufen lassen, wenn ich es möchte! Irgendwelche Ideen?

War es hilfreich?

Lösung

Dafür gibt es Edelsteine/Plugins, wie Rufus-Scheduler oder das beliebtere "wann immer" Juwel. Ich mag die Lösung von @Douglassellers, ich hatte nichts davon gehört.

Andere Tipps

Ich verwende einen verspäteten Job, eine "Datenbank unterstützte asynchrone Prioritätswarteschlangen", um etwas Ähnliches zu erreichen. Sich ansehen http://github.com/tobi/delayed_job

Sie müssen immer noch etwas haben, das "Rake Jobs: Work" ausstößt, aber es ist besser als viele verschiedene Cron -Jobs zu haben. Beachten Sie in der Dokumentation das: Run_at -Attribut - das sieht so aus, als ob es die "Planen Sie die Jobs irgendwo in meiner Rails -App lösen könnte und sie auf magische Weise laufen lassen, wenn ich möchte, dass sie" Problem ".

Zu diesem Zweck können Sie so etwas wie Rails Cron (Gem Installation Rails_Cron) verwenden, das einen anderen Schienenprozess abruft, der den geplanten Hintergrundaufgaben gewidmet ist. Ich würde es dagegen empfehlen, dies so zu tun, da die zusätzliche Schieneninstanz zusammen mit dem Rest Ihrer App überwacht und angehalten werden muss und meiner Erfahrung nach sehr anfällig für das Herunterfallen ist.

Eine bessere Lösung besteht darin, Craken nur zu verwenden, http://github.com/latimes/craken, um Crontabs über YAML -Dateien in Ihrer Rails -App zu verwalten. Jede geplante Aufgabe wird in einer YAML -Datei definiert, und dann entscheidet CRAKEN in der Bereitstellung, ob die Crontab -Datei der Systemebene aktualisiert werden muss oder nicht. Es steckt direkt in Ihre Capistrano-Bereitstellungsdatei ein und ist einigermaßen abschließend. Dies bietet den Vorteil, Ihre geplanten Aufgaben in Ihrer Rails -App weiterhin zu verwalten, während sie tatsächlich mit dem OS -Level -Cron ausgeführt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top