Class: RailsErrorDashboard::ScheduledDigestJob

Inherits:
ApplicationJob
  • Object
show all
Defined in:
app/jobs/rails_error_dashboard/scheduled_digest_job.rb

Overview

Background job to send scheduled error digest emails. Schedule this job via your preferred scheduler (SolidQueue, Sidekiq, cron).

Examples:

Schedule daily digest

RailsErrorDashboard::ScheduledDigestJob.perform_later(period: "daily")

Schedule via rake

rails error_dashboard:send_digest PERIOD=daily

Instance Method Summary collapse

Instance Method Details

#perform(period: "daily", application_id: nil, locale: nil) ⇒ Object

Parameters:

  • locale (String, nil) (defaults to: nil)

    resolved at enqueue time. nil for jobs enqueued by a pre-Phase-4 version still draining from the queue.



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'app/jobs/rails_error_dashboard/scheduled_digest_job.rb', line 17

def perform(period: "daily", application_id: nil, locale: nil)
  return unless RailsErrorDashboard.configuration.enable_scheduled_digests

  recipients = effective_recipients
  return if recipients.blank?

  resolved_locale = job_locale(locale)

  digest = Services::DigestBuilder.call(
    period: period.to_sym,
    application_id: application_id,
    locale: resolved_locale
  )

  DigestMailer.digest_summary(digest, recipients, locale: resolved_locale).deliver_now
rescue => e
  Rails.logger.error("[RailsErrorDashboard] ScheduledDigestJob failed: #{e.class}: #{e.message}")
end