Montierbare Engine mit Cron (immer wenn Juwel)

8

Ist es möglich, cron (über das asways-Juwel) zu verwenden, um Aufgaben direkt auf mountable engine models auszuführen? Der Cron würde meiner Meinung nach nicht in der Lage sein, von der Haupt-App aus zu starten, da montierbare Engines isoliert werden sollten.

Ich kann es immer in einer normalen Rails-App verwenden und es funktioniert großartig, aber ich muss Aufgaben auf eine Engine-Art ausführen.

Danke

    
pieterk 25.08.2012, 10:10
quelle

2 Antworten

3

Sie können eine Rails Engine nicht eigenständig ausführen und Aufgaben direkt ausführen, z. B. eine Rake-Task oder ein Modell aufrufen . Stellen Sie sich eine Rails Engine als Mini Rails App vor. Es bietet Funktionen und Funktionen für die übergeordnete Rails App. Für sich ist der Motor unvollständig. Wenn der Motor in einer Rails-App installiert ist, hat er Zugriff auf alle Konfigurations- und Initialisierungsfunktionen, die für einen korrekten Start und Betrieb erforderlich sind.

Die Rake-Aufgaben für eine geladene Engine werden in die übergeordnete Rails-App übernommen. Das Ausführen des Folgens sollte die Liste der Rake-Tasks von der Engine enthalten

%Vor%

Im Rails-Runner können Sie die Modelle, Bibliotheken, usw. der angehängten Rails-Engine ausführen Gut. Wenn Sie auf die Funktionen einer Engine zugreifen, müssen Sie den Namespace der Engine verwenden. Hier ist ein Beispiel aus dem Rails Guide für den Zugriff auf ein Model von einer Engine:

%Vor%     
mguymon 30.08.2012, 01:52
quelle
0

Die Designer von Rails haben es definitiv nicht für möglich gehalten. Immer wenn man sich auf das runnerscript von rails verlässt, welches nicht für mountbare Plugins unterstützt wird (aus gutem Grund - es gibt keine Anwendung, die mit Runner läuft). Vielleicht ist es möglich, einen anderen Weg zu finden, um den Code auszuführen, indem Sie immer einen anderen Ruby Executer verwenden (Rails-Konsole, IRB, etc.), aber das würde wahrscheinlich unbeabsichtigte Ergebnisse haben, da es nicht im Kontext einer Anwendung ist keine Konfiguration oder Umgebung.

Sie geben jedoch an: The cron I think would not be able to start from the main app since mountable engines are supposed to be isolated , aber ich habe es getestet und das ist nicht der Fall. Solange Sie den Runner-Task entsprechend benennen, sucht Ihre Anwendung bei jeder Konfigurationsdatei nach der entsprechenden Aufgabe im Plugin-Code und kann sie ausführen. Bitte lassen Sie mich wissen, wenn das aus irgendeinem Grund für Ihre speziellen Bedürfnisse nicht funktioniert.

    
Isaac Betesh 29.08.2012 21:29
quelle