From ed867eca9dbd7d798bc7179dbc13c4f1edc238ad Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 15 Jan 2018 04:34:28 +0100 Subject: Move e-mail digest task to sidekiq, reduce workload, improve hint (#6252) --- app/workers/scheduler/email_scheduler.rb | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 app/workers/scheduler/email_scheduler.rb (limited to 'app/workers/scheduler/email_scheduler.rb') diff --git a/app/workers/scheduler/email_scheduler.rb b/app/workers/scheduler/email_scheduler.rb new file mode 100644 index 000000000..24d0c0ebe --- /dev/null +++ b/app/workers/scheduler/email_scheduler.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true +require 'sidekiq-scheduler' + +class Scheduler::EmailScheduler + include Sidekiq::Worker + + def perform + eligible_users.find_each do |user| + next unless user.allows_digest_emails? + DigestMailerWorker.perform_async(user.id) + end + end + + private + + def eligible_users + User.confirmed + .joins(:account) + .where(accounts: { silenced: false, suspended: false }) + .where(disabled: false) + .where('current_sign_in_at < ?', 20.days.ago) + .where('last_emailed_at IS NULL OR last_emailed_at < ?', 20.days.ago) + end +end -- cgit