Sha256: 641bf24ae720708f1937ba0ed83f606ae1bf2bf321e60d6dcc0f7a8d44eee96a

Contents?: true

Size: 864 Bytes

Versions: 10

Compression:

Stored size: 864 Bytes

Contents

# frozen_string_literal: true

module Motor
  module Alerts
    module Scheduler
      SCHEDULER_INTERVAL = 10.seconds
      CHECK_BEHIND_DURATION = 15.minutes

      SCHEDULER_TASK = Concurrent::TimerTask.new(
        execution_interval: SCHEDULER_INTERVAL
      ) { Motor::Alerts::Scheduler.call }

      ALREADY_PROCESSED_CACHE = ActiveSupport::Cache::MemoryStore.new(size: 5.megabytes)

      module_function

      def call
        ScheduledAlertsCache.all.each do |alert|
          next unless (CHECK_BEHIND_DURATION.ago..Time.current).cover?(alert.cron.previous_time.to_local_time)

          ALREADY_PROCESSED_CACHE.fetch("#{alert.id}-#{alert.cron.previous_time.to_i}") do
            Motor::AlertSendingJob.perform_later(alert).job_id
          end
        rescue StandardError => e
          Rails.logger.error(e)
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
motor-admin-0.1.49 lib/motor/alerts/scheduler.rb
motor-admin-0.1.48 lib/motor/alerts/scheduler.rb
motor-admin-0.1.47 lib/motor/alerts/scheduler.rb
motor-admin-0.1.46 lib/motor/alerts/scheduler.rb
motor-admin-0.1.44 lib/motor/alerts/scheduler.rb
motor-admin-0.1.43 lib/motor/alerts/scheduler.rb
motor-admin-0.1.42 lib/motor/alerts/scheduler.rb
motor-admin-0.1.41 lib/motor/alerts/scheduler.rb
motor-admin-0.1.40 lib/motor/alerts/scheduler.rb
motor-admin-0.1.39 lib/motor/alerts/scheduler.rb