module Maitredee::ActiveJob

Public Class Methods

create_publisher_job(subclass) click to toggle source

@api private

# File lib/maitredee/active_job.rb, line 13
def self.create_publisher_job(subclass)
  subclass.const_set("PublisherJob", Class.new(BasePublisherJob))
  subclass::PublisherJob.service_class = subclass
end
extended(mod) click to toggle source
# File lib/maitredee/active_job.rb, line 6
def self.extended(mod)
  mod.descendants.each do |klass|
    create_publisher_job(klass)
  end
end

Public Instance Methods

call_later(*args) click to toggle source

Uses ActiveJob to async the publishing @example To configure the specific async job open PublisherJob

class RecipePublisher < Maitredee::Publisher
  class PublisherJob
    queue_as :low
  end
end

RecipePublisher.call_later(Recipe.find(1))
# File lib/maitredee/active_job.rb, line 28
def call_later(*args)
  self::PublisherJob.perform_later(*args)
end
call_later_at(at, *args) click to toggle source

Like `call_later`, but performs at a given time @example Configuring a time to perform the job

RecipePublisher.call_later_at(Date.tomorrow.noon, Recipe.find(1))
# File lib/maitredee/active_job.rb, line 36
def call_later_at(at, *args)
  self::PublisherJob.set(wait_until: at).perform_later(*args)
end

Private Instance Methods

create_publisher_job(subclass) click to toggle source
# File lib/maitredee/active_job.rb, line 47
def create_publisher_job(subclass)
  Maitredee::ActiveJob.create_publisher_job(subclass)
end
inherited(subclass) click to toggle source
Calls superclass method
# File lib/maitredee/active_job.rb, line 42
def inherited(subclass)
  create_publisher_job(subclass)
  super
end