Je voudrais exécuter une tâche de rake dans mon contrôleur. Y a-t-il un moyen de faire ça?
Merci,
Sophy,
Je voudrais exécuter une tâche de rake dans mon contrôleur. Y a-t-il un moyen de faire ça?
Merci,
Sophy,
Je suis d'accord avec ddfreynee, mais si vous savez ce dont vous avez besoin, le code peut ressembler à ceci:
require 'rake'
Rake::Task.clear # necessary to avoid tasks being loaded several times in dev mode
Sample::Application.load_tasks # providing your application name is 'sample'
class RakeController < ApplicationController
def run
Rake::Task[params[:task]].reenable # in case you're going to invoke the same task second time.
Rake::Task[params[:task]].invoke
end
end
Vous pouvez plutôt demander 'rake' et .load_tasks dans un initialiseur.
Je ne trouve pas ça de bon style d'appeler une tâche rake en code. Je recommande de mettre le code de la tâche que vous souhaitez exécuter en dehors d'une tâche rake et de laisser la tâche rake appeler ce code.
Cela a non seulement l'avantage d'être facile à appeler en dehors de rake (c'est ce que vous voulez), mais cela facilite également beaucoup le test de la tâche de rake.
Ryan Bates couvre plusieurs aspects de l'épisode n ° 127 de RailsCasts.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.