Sha256: b3f7556f73245b7489e78ec7eaf295dd30709e1d2a2fd3a1335ef0a42d1670fe

Contents?: true

Size: 974 Bytes

Versions: 5

Compression:

Stored size: 974 Bytes

Contents

# frozen_string_literal: true

module Delayed
  module Master
    module Postgresql
      class << self
        def notify(model)
          model.connection.execute "NOTIFY delayed_job_master"
        end
      end

      module JobNotifier
        extend ActiveSupport::Concern

        included do
          after_create :notify_to_delayed_job_master
        end

        private

        def notify_to_delayed_job_master
          if run_at && run_at < Time.zone.now
            Delayed::Master::Postgresql.notify(self.class)
          end
        end
      end

      module BulkJobNotifier
        extend ActiveSupport::Concern

        included do
          after_enqueue :notify_to_delayed_job_master
        end

        private

        def notify_to_delayed_job_master
          if @jobs.any? { |job| job.run_at && job.run_at < Time.zone.now }
            Delayed::Master::Postgresql.notify(@jobs.first.class)
          end
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
delayed_job_master-3.1.2 lib/delayed/master/postgresql/job_notifier.rb
delayed_job_master-3.1.1 lib/delayed/master/postgresql/job_notifier.rb
delayed_job_master-3.1.0 lib/delayed/master/postgresql/job_notifier.rb
delayed_job_master-3.0.1 lib/delayed/master/postgresql/job_notifier.rb
delayed_job_master-3.0.0 lib/delayed/master/postgresql/job_notifier.rb