2011-04-12 7 views
56

Comment exécuter ce fichier Rake dans le terminal/la console?Rails comment exécuter la tâche rake

mon statistik.rake dans lib/tâches

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 

Répondre

86

Vous ne devriez pas exécuter les tâches de râteau dans la console Rails, mais dans un terminal/commande en exécutant

rake task_name 

Si vraiment vous devez exécuter une tâche Rake en Ruby, vous devriez être capable de faire:

Rake::Task['task_name'].invoke 

mais cela est généralement fait uniquement dans une tâche Rake pour en exécuter une autre.

Pour exécuter plusieurs tâches dans le même espace de noms avec une seule tâche, créer la nouvelle tâche suivante dans votre espace de noms:

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

Comment ramasser toutes les tâches à la fois ou dois-je changer l'espace de noms pour une tâche? –

+1

Si vous voulez exécuter toutes les tâches à la fois, faites tâche: all => [: a,: b,: c], puis exécutez rake reklamer: all –

+1

Cela ne faisait pas partie de votre question, mais vous devez faire une nouvelle tâche qui appelle chacun d'eux, ce qui est un raccourci pour. Voir ma réponse mise à jour. –

18

Avez-vous essayé rake reklamer:iqmedier?

Mes tâches de rake personnalisées se trouvent dans le répertoire lib, pas dans lib/tasks. Je ne sais pas si cela compte.

+1

Je veux exécuter toutes les tâches à la fois –

+0

au lieu de taper reklamer râteau: iqmedier, rake reklamer: euroads .... –

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

ou

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

Cette approche fonctionnera, mais la méthode «correcte» pour regrouper les tâches de raks a été répondue par @ andrew-marshall. –

+3

s'il vous plaît fournir une référence si vous allez dire quelque chose comme «la« bonne façon ... ». Ma réponse était une réponse à la question initiale. –

+2

En tant que test théorique, j'ai essayé d'exécuter 'Rake :: Task ['db: seed']. Invoke' mais il ne fonctionne pas, en disant" Ne sais pas comment construire la tâche 'db: seed' " – lulalala

1

Dans les rails 4.2, les méthodes ci-dessus ne fonctionnaient pas.

  1. Allez au terminal.
  2. Modifiez le répertoire à l'emplacement où votre fichier rake est présent.
  3. Exécutez rake nom_tâche.
  4. Dans le cas ci-dessus, exécutez rake iqmedier - exécute uniquement la tâche iqmedir.
  5. exécuter rake euroads - exécutera uniquement la tâche euroads.
  6. Pour exécuter toutes les tâches dans ce fichier assignent les éléments suivants à l'intérieur du râteau même fichier et exécuter tous

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