データベースの大規模な更新 (外部サーバーの呼び出し、計算など) を行うクラス ( /lib/updater.rb
) があります。通常、このタスクはサーバーの cron (rake /lib/tasks/launch_updater.rake
を開始するupdater.rb
) によって呼び出されますが、クライアントからも手動で開始できるようにしたいと考えています。
この時点で、ユーザーはクライアントからボタンをクリックして、次の方法で起動できます。
# the controller
Thread.new {
Updater.start
}
それは良い解決策ですか、それともレーキタスクから直接起動する方が良いですか?
# something like this from the controller
Rake::Task[params[:task]].reenable
Rake::Task[params[:task]].invoke
タスクはノーブロッカーである必要があります (ユーザーは、タスクの終了を待たずにアプリで通常どおりに移動する必要があります)。
どちらが優れているのか、その理由は?