Rails come eseguire rake task


93

Come eseguo questo file rake nel terminale / console?

il mio statistik.rake in lib / tasks

desc "Importer statistikker"
namespace :reklamer do
  task :iqmedier => :environment do
    ...
  end
  task :euroads => :environment do
    ...
  end
  task :mikkelsen => :environment do
    ...
  end
  task :orville => :environment do
    ...
  end
end

Risposte:


130

Puoi eseguire Rake task dalla tua shell eseguendo:

rake task_name

Per eseguire da Ruby (ad esempio, nella console di Rails o in un'altra attività Rake):

Rake::Task['task_name'].invoke

Per eseguire più attività nello stesso spazio dei nomi con una singola attività, crea la seguente nuova attività nel tuo spazio dei nomi:

task :runall => [:iqmedier, :euroads, :mikkelsen, :orville] do
  # This will run after all those tasks have run
end

1
Come posso eseguire il rake di tutte le attività contemporaneamente o devo modificare lo spazio dei nomi in un'attività?
Rails principiante

1
Se vuoi eseguire tutte le attività contemporaneamente, crea task: all => [: a,: b,: c] e poi esegui rake reklamer: all
Spike Gronim

1
Non faceva parte della tua domanda, ma dovresti creare un nuovo compito che chiami ciascuno di loro, per il quale c'è una scorciatoia. Vedi la mia risposta aggiornata.
Andrew Marshall

1
@ Andrew Marshall, btw, puoi usare task :runall => Rake::Task.tasksse vuoi eseguire tutte le attività. Ma questa riga deve essere dichiarata dopo tutte le attività.
Vasiliy Ermolovich

Dove dovrebbe andare l'attività: runall =>?
Rails principiante

25
Rake::Task['reklamer:orville'].invoke

o

Rake::Task['reklamer:orville'].invoke(args)

Questo approccio funzionerà, ma @ andrew-marshall ha risposto al modo "corretto" di raggruppare le attività di raks.
Tom Harrison,

3
si prega di fornire un riferimento se hai intenzione di dire qualcosa come "il modo" corretto "...". la mia risposta è stata una risposta alla domanda originale.
Luke W

3
Come test teorico, ho provato a correre Rake::Task['db:seed'].invokema non viene eseguito, dicendo "Non so come costruire l'attività 'db: seed'"
lulalala

21

Hai provato rake reklamer:iqmedier?

Le mie attività rake personalizzate si trovano nella directory lib, non in lib / tasks. Non sono sicuro che sia importante.


1
Voglio eseguire tutte le attività contemporaneamente
Principiante di Rails il

13

A volte le tue attività di rake non vengono caricate nella console, in tal caso puoi provare i seguenti comandi

require "rake"
YourApp::Application.load_tasks
Rake::Task["Namespace:task"].invoke

Quelle citazioni sono cattive ma non posso modificarle perché è una modifica troppo piccola!
Nroose

Anche se questa non è una vera risposta alla domanda posta. Questo è quello che stavo cercando e ha risolto il mio problema (YourApp :: Application.load_tasks). Grazie!
Dennis van de Hoef

3

Se non sei sicuro di come eseguire un'attività rake, prima scopri quali attività hai e elencherà anche i comandi per eseguire le attività.

Esegui rake --taskssul terminale.

Elencherà le attività come le seguenti:

rake gobble:dev:prime             
rake gobble:dev:reset_number_of_kits                                    
rake gobble:dev:scrub_prod_data

È quindi possibile eseguire l'attività con: rake gobble:dev:primecome elencato.


1

In rails 4.2 i metodi precedenti non funzionavano.

  1. Vai al terminale.
  2. Cambia la directory nella posizione in cui è presente il tuo file rake.
  3. eseguire rake task_name.
  4. Nel caso precedente, esegui rake iqmedier - eseguirà solo l'attività iqmedir.
  5. run rake euroads - eseguirà solo l'attività euroads.
  6. Per eseguire tutte le attività in quel file, assegnare quanto segue all'interno dello stesso file ed eseguire rake all

    task :all => [:iqmedier, :euroads, :mikkelsen, :orville ] do #This will print all the tasks o/p on the screen 
    end
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.