Je veux invoquer ma tâche de râteau depuis la console. Est-ce faisable? si oui, comment faire?
J'ai essayé cela sur console:
require 'rake'
Rake::Task['my_task'].invoke
mais ça 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
L'exécution de vos tâches de râteau nécessite deux étapes:
Vous manquez la deuxième étape.
Normalement, cela se fait dans le Rakefile, mais vous devez le faire manuellement ici:
require 'rake'
Rails.application.load_tasks # <-- MISSING LINE
Rake::Task['my_task'].invoke
La façon la plus simple de le faire est d'exécuter la commande% x [] à partir de l'irb. Je ne sais pas si ce que vous voulez réaliser.
%x[rake db:migrate]
EDIT: Je recommande fortement d'utiliser .invoke
comme Daniel le dit dans la réponse acceptée.
La manière la plus simple est:
Rails.application.load_tasks
Rake::Task['my_task'].invoke
Juste une note que si vous êtes dans la console Rails via Rails c
, Vous pouvez simplement appeler/exécuter la méthode de tâche de râteau par irb(main):001:0> TaskClassName.new.my_task
J'utilise Rails 5.x.x
, et avait besoin de faire la même forme Rails console
.
J'ai créé une tâche de râteau ici-
app/lib/task_to_execute.rake
Voici la commande qui a fonctionné pour moi-
Charge Rails.application.load_tasks
Rake::Task['task_to_execute:task_name'].invoke
A travaillé pour moi!