Sha256: ac7fb9c1bc1b818b78d79b0d10c5e604ed4280c6836a0eb003fb2659a422afe0

Contents?: true

Size: 982 Bytes

Versions: 10

Compression:

Stored size: 982 Bytes

Contents

module Marty
  module DelayedJob
    class ScheduledJobPlugin < Delayed::Plugin
      class << self
        def cron?(job)
          job.cron.present?
        end
      end

      callbacks do |lifecycle|
        # We want to nullify cron column if job schedule was turned off
        # while the job was running, so it won't add a new record to
        # delayed_jobs table
        lifecycle.before(:error) do |worker, job, &block|
          if cron?(job)
            begin
              job_class_str = job.handler.split("\n").find do |line|
                line.include? 'job_class'
              end
              job_class_name = job_class_str.gsub('job_class:', '').strip
              job_class = job_class_name.constantize
              job.cron = job_class.cron_expression
            rescue StandardError
            end
          else
            # No cron job - proceed as normal
            block.call(worker, job)
          end
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
marty-9.5.1 lib/marty/delayed_job/scheduled_job_plugin.rb
marty-9.5.0 lib/marty/delayed_job/scheduled_job_plugin.rb
marty-9.3.3 lib/marty/delayed_job/scheduled_job_plugin.rb
marty-9.3.2 lib/marty/delayed_job/scheduled_job_plugin.rb
marty-9.3.0 lib/marty/delayed_job/scheduled_job_plugin.rb
marty-8.5.0 lib/marty/delayed_job/scheduled_job_plugin.rb
marty-8.4.1 lib/marty/delayed_job/scheduled_job_plugin.rb
marty-8.3.1 lib/marty/delayed_job/scheduled_job_plugin.rb
marty-8.2.0 lib/marty/delayed_job/scheduled_job_plugin.rb
marty-8.0.0 lib/marty/delayed_job/scheduled_job_plugin.rb