From 17950ba4986fc8117a4e5c108115f014bfc6bf74 Mon Sep 17 00:00:00 2001 From: Rob Harrington Date: Fri, 2 Feb 2018 11:25:52 +1100 Subject: [PATCH] Lazy load summarizers for standing order jobs outside of initializer The enqueue script seems to causes delayed job to skip initialization of the job class, meaning that the summarizers were missing --- app/jobs/standing_order_confirm_job.rb | 16 +++++++--------- app/jobs/standing_order_placement_job.rb | 16 +++++++--------- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/app/jobs/standing_order_confirm_job.rb b/app/jobs/standing_order_confirm_job.rb index 21f25e5626..04f336430c 100644 --- a/app/jobs/standing_order_confirm_job.rb +++ b/app/jobs/standing_order_confirm_job.rb @@ -2,15 +2,6 @@ require 'open_food_network/standing_order_payment_updater' require 'open_food_network/standing_order_summarizer' class StandingOrderConfirmJob - attr_accessor :summarizer - - delegate :record_order, :record_success, :record_issue, to: :summarizer - delegate :record_and_log_error, :send_confirmation_summary_emails, to: :summarizer - - def initialize - @summarizer = OpenFoodNetwork::StandingOrderSummarizer.new - end - def perform ids = proxy_orders.pluck(:id) proxy_orders.update_all(confirmed_at: Time.zone.now) @@ -24,6 +15,13 @@ class StandingOrderConfirmJob private + delegate :record_order, :record_success, :record_issue, to: :summarizer + delegate :record_and_log_error, :send_confirmation_summary_emails, to: :summarizer + + def summarizer + @summarizer ||= OpenFoodNetwork::StandingOrderSummarizer.new + end + def proxy_orders ProxyOrder.not_canceled.where('confirmed_at IS NULL AND placed_at IS NOT NULL') .joins(:order_cycle).merge(recently_closed_order_cycles) diff --git a/app/jobs/standing_order_placement_job.rb b/app/jobs/standing_order_placement_job.rb index b606de46d5..8f3c061a42 100644 --- a/app/jobs/standing_order_placement_job.rb +++ b/app/jobs/standing_order_placement_job.rb @@ -1,15 +1,6 @@ require 'open_food_network/standing_order_summarizer' class StandingOrderPlacementJob - attr_accessor :summarizer - - delegate :record_order, :record_success, :record_issue, to: :summarizer - delegate :record_and_log_error, :send_placement_summary_emails, to: :summarizer - - def initialize - @summarizer = OpenFoodNetwork::StandingOrderSummarizer.new - end - def perform ids = proxy_orders.pluck(:id) proxy_orders.update_all(placed_at: Time.zone.now) @@ -23,6 +14,13 @@ class StandingOrderPlacementJob private + delegate :record_order, :record_success, :record_issue, to: :summarizer + delegate :record_and_log_error, :send_placement_summary_emails, to: :summarizer + + def summarizer + @summarizer ||= OpenFoodNetwork::StandingOrderSummarizer.new + end + def proxy_orders # Loads proxy orders for open order cycles that have not been placed yet ProxyOrder.not_canceled.where(placed_at: nil)