2011-04-12 14 views
56

Come si esegue questo file rake nel terminale/console?Rails come eseguire l'attività di rake

mia statistik.rake in lib/task

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 

risposta

86

Non dovrebbe essere in esecuzione compiti Rake nella console Rails, ma invece nel prompt del terminale/Comando eseguendo

rake task_name 

Se veramente necessario eseguire un'attività Rake in Ruby, si dovrebbe essere in grado di fare:

Rake::Task['task_name'].invoke 

ma di solito questo viene eseguito solo in un'attività Rake per eseguirne un altro.

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

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

Come faccio a rakeare tutte le attività in una volta o devo cambiare lo spazio dei nomi in un'attività? –

+1

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

+1

Questo non faceva parte della tua domanda, ma dovevi creare un nuovo compito che chiama ciascuno di essi, per cui esiste una scorciatoia. Vedi la mia risposta aggiornata. –

18

Hai provato rake reklamer:iqmedier?

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

+1

voglio correre tutte le attività in una sola volta –

+0

Invece di digitare rake reklamer: iqmedier, rake reklamer: euroads .... –

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

o

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

Questo approccio funzionerà, ma il metodo "corretto" per raggruppare le attività di raks è stato risposto da @ andrew-marshall. –

+3

si prega di fornire riferimento se stai per dire qualcosa come "il" modo corretto "... '. la mia risposta è stata una risposta alla domanda originale. –

+2

Come test teorico, ho provato a eseguire 'Rake :: Task ['db: seed']. Invoke' ma non viene eseguito, dicendo" Non so come creare un'attività 'db: seed' " – lulalala

1

Nelle rotaie 4.2 i metodi precedenti non hanno funzionato.

  1. Vai al terminale.
  2. Cambia la directory nella posizione in cui è presente il file rake.
  3. run rake nome_attività.
  4. Nel caso precedente, eseguire rake iqmedier - eseguirà solo attività iqmedir.
  5. run rake euroads - eseguirà solo il compito euroads.
  6. per eseguire tutti i compiti in quel file assegnano il seguente all'interno del rake stesso file ed eseguire tutte

    task :all => [:iqmedier, :euroads, :mikkelsen, :orville ] do #This will print all the tasks o/p on the screen 
    end 
    
Problemi correlati