Laufender Code, nachdem Rails geladen wurde?

8

Ich habe eine periodische Aufgabe, die einmal pro Minute ausgeführt werden muss (mit delayed_job). Ich möchte, dass Rails es automatisch in die Warteschlange stellt, sobald es fertig geladen ist, wenn eine solche Aufgabe nicht bereits im System vorhanden ist.

Was ist ein guter Platz für mich, um am Ende des gesamten Boot-Ablaufs von Rails Code auszuführen? Jemand hat config / environments / development.rb (oder eine andere Umgebung) vorgeschlagen, aber delayed_job gibt mir Probleme mit ActiveRecord, wenn ich Jobs von dort in der Warteschlange anlege.

Ich habe Ссылка konsultiert und es scheint auch keinen eindeutigen Ort für diese Art von Code zu geben.

Stimmt diese Art von Post-Deployment-Setup möglicherweise extern mit dem Code meiner App überein, vielleicht durch Rake oder andere Mittel? Irgendwelche Vorschläge?

Danke!

    
Alexandr Kurilin 10.06.2012, 21:18
quelle

3 Antworten

8

Was Ссылка betrifft, wir arbeiten hart daran, es umzuschreiben. Für dein Problem würde ich mit config.after_initialize in deiner Anwendung versuchen. Rb

%Vor%     
Oscar Del Ben 11.06.2012, 02:39
quelle
3

Fügen Sie Ihren Code in das Initialisierungsverzeichnis ein.

Ссылка

    
Ismael Abreu 10.06.2012 21:25
quelle
2

Sie haben wirklich zwei Möglichkeiten

1) füge es in das Initialisierungsverzeichnis ein und das sollte in Ordnung sein.

2) fügen Sie es am Ende von application.rb hinzu, das ist weniger sauber, aber es wird Dinge wie Initializer zu diesem Zeitpunkt bereit haben; p also, wenn 1) wegen AR-Problemen nicht funktioniert 2)

    
Jakub Oboza 10.06.2012 21:28
quelle