Sha256: c40a32805323ea95c50e232143328f7d376be22d0172601f48ef4ba81b2ddf8b
Contents?: true
Size: 855 Bytes
Versions: 2
Compression:
Stored size: 855 Bytes
Contents
require 'active_support/concern' module RocketJob module Plugins # Prevent more than one instance of this job class from running at a time module Singleton extend ActiveSupport::Concern included do # Validation prevents a new job from being saved while one is already running validates_each :state do |record, attr, _value| if (record.running? || record.queued? || record.paused?) && record.rocket_job_singleton_active? record.errors.add(attr, "Another instance of #{record.class.name} is already queued or running") end end # Returns [true|false] whether another instance of this job is already active def rocket_job_singleton_active? self.class.where(:state.in => %i[running queued], :id.ne => id).exists? end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rocketjob-3.5.1 | lib/rocket_job/plugins/singleton.rb |
rocketjob-3.5.0 | lib/rocket_job/plugins/singleton.rb |