RailsでRakeタスクをcontrollerから呼び出す時の覚書

RailsでRakeタスクをcontrollerから呼び出す時の覚書


メドッドに以下を追加

require 'rake'

Rails.application.load_tasks
Rake::Task['タスク名'].execute

# clearをしないと次のリクエスト時にload_tasksでタスクが再度読み込まれ、execute内で2回実行されてしまう。
# さらにリクエストがあると3、4とどんどん増えるていく罠
Rake::Task['タスク名'].clear


clearしておかないと多重実行されるという罠にハマるので覚書で記述します。

意外と忘れて久しぶりに罠にまた引っかかるという・・・

なんでtaskをcontrollerから実行されているのというと

task作ったが非エンジニアから画面から実行したいとか、わざわざエンジニアがコンソール叩くのめんどくさくなったので

注)

この方法は、その場しのぎですので

本来はクラスに切り出して、taskでもcontrollerからでも両方から呼べるようにするべきです。