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

57
demandé sur Daniel Rikowski 2011-01-28 13:04:55

4 réponses

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

  1. Chargement Râteau
  2. 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.)

126
répondu Daniel Rikowski 2013-05-30 08:34:09

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.

12
répondu garno 2015-02-24 16:19:07

Le moyen facile est:

Rails.application.load_tasks
Rake::Task['my_task'].invoke
1
répondu WaKeMaTTa 2018-08-22 12:26:24

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

0
répondu aabiro 2018-09-14 10:13:11