2012-08-25 6 views
8

È possibile utilizzare cron (tramite il gemma ogni volta) per eseguire attività direttamente su modelli di motore montabili. Il cron credo non sarebbe in grado di iniziare dall'app principale poiché i motori montabili dovrebbero essere isolati.Motore montabile con cron (quando gemma)

Sono in grado di utilizzare ogni volta all'interno di una normale app per rails e funziona alla grande, ma ho bisogno di eseguire attività in modo motorizzato.

Grazie

risposta

3

Non è possibile eseguire uno Rails Engine da solo ed eseguire direttamente attività, come un'attività Rake o chiamando un modello. Pensa a un motore Rails come app mini Rails. Fornisce funzionalità e funzionalità per l'installazione dell'app Rails padre. Di per sé, il motore è incompleto. Con il motore montato su un'app Rails, ha accesso a tutte le configurazioni e gli inizializzatori necessari per l'avvio e il funzionamento corretto.

Le attività Rake per un motore montato vengono ereditate nell'app delle guide principali. L'esecuzione del follow dovrebbe includere l'elenco dei task Rake dal motore

rake -T 

Dal Rails runner, è possibile eseguire l'modelle montato Rails del motore, librerie, ecc pure. Quando si accede alle funzionalità di un motore, è necessario utilizzare lo spazio dei nomi del motore. Ecco un esempio dalla Rails Guide per l'accesso a un modello da un motore:

Blorgh::Post.find(1) 
+0

Sono ancora relativamente nuovo per i motori di rotaie e motori montabile quindi questa è una curva di apprendimento. Quindi, da quello che hai detto, mi viene chiaro un po 'che mi mostra che posso eseguire cron direttamente sui modelli di Engine, ma l'esecuzione dovrebbe essere avviata dall'applicazione host. Essendo isolato pensavo che i motori montabili fossero solo questo, scatola nera ma da quello che hai citato ho fatto un tentativo e funziona davvero bene per me. Segnerò correttamente questa domanda poiché ha risolto correttamente il problema del mio motore delle rotaie e mi ha dato un po 'più di conoscenza dei motori. – pieterk

0

i progettisti di Rails sicuramente non intendevano che fosse possibile. Ogni volta che si affida allo script runner delle rotaie, che non è supportato per i plugin montabili (per una buona ragione - non c'è un'applicazione da eseguire con il corridore). Forse è possibile trovare un altro modo per eseguire il codice configurando ogni volta che si utilizza un diverso ruby ​​executer (console rails, IRB, ecc.) Ma questo probabilmente avrà risultati non voluti poiché non è nel contesto di un'applicazione, quindi si ha nessuna configurazione o ambiente.

Tuttavia, si specifica: The cron I think would not be able to start from the main app since mountable engines are supposed to be isolated, ma l'ho provato e non è il caso. Finché lo spazio dei nomi è appropriato per il runner, il file di configurazione di ogni applicazione troverà l'attività appropriata nel codice del plugin e sarà in grado di eseguirlo. Per favore fatemi sapere se per qualche motivo non funzionerà per le vostre particolari esigenze.