web-dev-qa-db-fra.com

Comment exécuter des tâches de râteau à partir de la console?

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

73
Fajarmf

L'exécution de vos tâches de râteau nécessite deux étapes:

  1. Chargement Râtea
  2. Chargement de votre tâches de râtea

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
155
Daniel Rikowski

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.

14
garno

La manière la plus simple est:

Rails.application.load_tasks
Rake::Task['my_task'].invoke
5
Mohamed Ziata

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

1
aabiro

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!

1
S.Yadav