Make calculate_winners explicitly delayed
Why: * As seen on preproduction and production environments on Madrid's fork. Budget::Result#calculate_winners is very costly when done to all headings for a given budget (as requested on Admin::BudgetsController#calculate_winners) but its not when done individually for only a heading (as requested on Budget::Investment#recalculate_heading_winners) How: * Removing `handle_asynchronously :calculate_winners` from bellow Budget::Result#calculate_winners definition, to avoid making any call delayed. And explicitly calling `.delay` only when needed (on Admin::BudgetsController#calculate_winners)
This commit is contained in:
@@ -20,7 +20,7 @@ class Admin::BudgetsController < Admin::BaseController
|
||||
|
||||
def calculate_winners
|
||||
return unless @budget.balloting_process?
|
||||
@budget.headings.each { |heading| Budget::Result.new(@budget, heading).calculate_winners }
|
||||
@budget.headings.each { |heading| Budget::Result.new(@budget, heading).delay.calculate_winners }
|
||||
redirect_to admin_budget_budget_investments_path(budget_id: @budget.id, filter: 'winners'),
|
||||
notice: I18n.t("admin.budgets.winners.calculated")
|
||||
end
|
||||
|
||||
@@ -15,7 +15,6 @@ class Budget
|
||||
set_winner if inside_budget?
|
||||
end
|
||||
end
|
||||
handle_asynchronously :calculate_winners
|
||||
|
||||
def investments
|
||||
heading.investments.selected.sort_by_ballots
|
||||
|
||||
Reference in New Issue
Block a user