2011-01-28 13 views
47

Desidero richiamare la mia attività rake dalla console. È fattibile? se sì, come fare?Come eseguire le attività di rake dalla console?

Ho provato questo su console:

require 'rake' 
Rake::Task['my_task'].invoke 

ma mi danno questo errore:

RuntimeError: Don't know how to build task 

è come il rastrello non può trovare il compito.

qualsiasi aiuto sarebbe apprezzato.

Grazie

Edit: Sto usando le rotaie 2.3.5

risposta

111

Esecuzione dei compiti Rake richiede due fasi:

  1. Caricamento Rake
  2. Caricamento delle compiti Rake

Ti manca il secondo passo.

Normalmente questo viene fatto nel Rakefile, ma è necessario farlo manualmente qui: (. Assicurarsi di sostituire MyRailsApp con il tuo nome applicazione Rails)

require 'rake' 
MyRailsApp::Application.load_tasks # <-- MISSING LINE 
Rake::Task['my_task'].invoke 

+0

Questo ha risolto il mio problema. Grazie!! –

+2

Per ulteriori opzioni, consultare http://stackoverflow.com/questions/577944/how-to-run-rake-tasks-from-within-rake-tasks –

+4

Si potrebbe voler notare la differenza tra dire ".invoke" e '.execute', se hai bisogno di eseguire l'attività più volte (come un correttore di integrità dei dati con un'app che impiega troppo tempo per essere avviato), allora dovrai" .eseguire "l'attività. –

13

Il modo più semplice per farlo è quello di eseguire% x [comando] dal IRB. Non sono sicuro se quello che vuoi ottenere però.

%x[rake db:migrate] 

EDIT: consiglio vivamente di utilizzare .invoke come Daniel dice nella risposta accettata.

+0

il problema è, rastrello doesn sembra che riconosca il mio compito. qualche idea del perché? – Fajarmf

+0

Puoi mostrarmi il tuo Rakefile? – garno

+0

funziona perfettamente @garno! scusa, so che è passato un anno e all'improvviso mi sto imbattendo nello stesso bisogno. – Fajarmf

Problemi correlati