2013-10-10 3 views
5

Ho recentemente preso l'amore con Gruntjs e sono stato felice di lanciare in ogni occasione per rendere la mia vita di sviluppo molto più facile. Attualmente sto compilando i miei file SASS, eseguendo orologi e usando nodemon per mantenere il mio nodo server in aggiornamento mentre lavoro sull'app.Gruntjs - Esecuzione di più attività di blocco in un ordine specifico (Mongo e Node.js)

Quindi ecco dove ho trascorso la mattinata impazzendo. Vorrei avviare MongoDB prima che l'applicazione Node sia in esecuzione. Nel setup dell'app Node, controllo eventuali valori nei database e, se è vuoto, spingo un file di test pieno di informazioni nelle tabelle.

Attualmente ho provato a utilizzare grunt-concurrent e grunt-shell-spawn per eseguire i necessari comandi mongo e nodo.

grunt.initConfig({ 
    shell: { 
    mongo: { 
     command: 'mongo' 
    }, 
    node: { 
     command: 'node app.js' 
    } 
    }, 
    concurrent: { 
    dev: { 
     tasks: ['shell:mongo','shell:node'], 
     options: { logConcurrentOutput: true } 
    } 
    } 
}); 
grunt.loadNpmTasks('grunt-concurrent'); 
grunt.loadNpmTasks('grunt-shell-spawn'); 

C'è un modo per garantire che il comando mongo raggiunge il suo "blocco" stato prima di eseguire il compito di nodo? Sto indovinando che questo potrebbe essere fatto eseguendo il task asincrono del nodo su una funzione setTimeout, ma non voglio essere costantemente in attesa di vedere le modifiche nel processo di sviluppo abbiano effetto. Attualmente ho tenuto aperta una scheda shell separata per il database e vorrei davvero integrarla in Grunt per mantenere tutto in un unico posto.

Non sono sicuro che sia importante su vasta scala, ma chiunque stia utilizzando Node.js e MongoDB lo troverebbe davvero utile.

Grazie

risposta

-2

È possibile intervallo di controllo porta di servizio del MongoDB per vedere se è accessibile \

+0

Per favore, prova a leggere questo http://stackoverflow.com/about, per ottenere maggiori informazioni su domande/risposte qui su SO. Il tuo contributo non risponde alla domanda. È più un commento, che puoi aggiungere una volta aumentata la tua reputazione: http://stackoverflow.com/faq#reputation –

0

Cercando utilizzando grugnito-nodemon con shell:? Mongo mentre specificando "opzioni: {asincroni: true}"

concurrent: { 
     tasks: ['shell', 'nodemon'], 
     options: { 
      logConcurrentOutput: true 
     } 
    }, 
    shell: { 
     mongo: { 
      command: 'mongod', 
      options: { 
       async: true 
      } 
     } 
    }, 
nodemon: { 
     dev: { 
      script: "server.js", 
     } 
    } 

Questo ha funzionato per me.

+1

Nodemon è un ottimo strumento per la gestione di un'impostazione di sviluppo del nodo, ma in realtà non era punto di questa domanda. Avete un esempio di prova in cui shell: mongo raggiunge il suo stato di blocco _questo tempo_ prima dell'avvio di nodemon? L'opzione asincrona non lo garantisce. –