module Card::Set::Event::DelayedEvent

Constants

DELAY_STAGES

Public Instance Methods

priority() click to toggle source
# File lib/card/set/event/delayed_event.rb, line 21
def priority
  @priority || 10
end

Private Instance Methods

define_delayed_event_method() click to toggle source
# File lib/card/set/event/delayed_event.rb, line 36
def define_delayed_event_method
  define_event_delaying_method
  define_standard_event_method delaying_method_name
end
define_event_delaying_method() click to toggle source

creates a method that creates an ActiveJob that calls the event method. The scheduled job gets the card object as argument and all serializable attributes of the card. (when the job is executed ActiveJob fetches the card from the database so all attributes get lost) It uses the event as queue name

# File lib/card/set/event/delayed_event.rb, line 47
def define_event_delaying_method
  @set_module.class_exec(self) do |event|
    define_method(event.delaying_method_name, proc do
      IntegrateWithDelayJob
        .set(set_delayed_job_args(event))
        .perform_later(*perform_delayed_job_args(event))
    end)
  end
end
process_delayed_job_opts(opts) click to toggle source
# File lib/card/set/event/delayed_event.rb, line 27
def process_delayed_job_opts opts
  @priority = opts.delete :priority
end
with_delay?(opts) click to toggle source
# File lib/card/set/event/delayed_event.rb, line 31
def with_delay? opts
  opts.delete(:delay) ||
    DELAY_STAGES.intersect?([opts[:after], opts[:before]].to_set)
end