Comment exécuter des tâches rake à partir de la console?
Je veux appeler ma tâche rake depuis la console. Est-il faisable? si oui, comment faire?
J'ai essayé ceci sur la console:
require 'rake'
Rake::Task['my_task'].invoke
Mais cela me donne cette erreur:
RuntimeError: Don't know how to build task
C'est comme si le râteau ne pouvait pas trouver la tâche.
Toute aide serait appréciée.
Merci
Edit: j'utilise rails 2.3.5
4 réponses
L'exécution de vos tâches de râteau nécessite deux étapes:
- Chargement Râteau
- chargement de vos tâches Rake
Vous manquez la deuxième étape.
Normalement, cela est fait dans le Rakefile, mais vous devez le faire manuellement ici:
require 'rake'
MyRailsApp::Application.load_tasks # <-- MISSING LINE
Rake::Task['my_task'].invoke
(Assurez-vous de remplacer MyRailsApp
par le nom de votre application Rails.)
La façon La plus simple de le faire est d'exécuter %x[commande] de la cisr. Je ne suis pas sûr si ce que vous voulez réaliser cependant.
%x[rake db:migrate]
EDIT: je recommande fortement d'utiliser .invoke
comme le dit Daniel dans la réponse acceptée.
Le moyen facile est:
Rails.application.load_tasks
Rake::Task['my_task'].invoke
Juste une remarque, si vous êtes dans la console rails via rails c
, vous pouvez simplement appeler/exécuter la tâche rake méthode par irb(main):001:0> TaskClassName.new.my_task