Module: Easyop::Plugins::Async::ClassMethods

Defined in:
lib/easyop/plugins/async.rb

Instance Method Summary collapse

Instance Method Details

#_async_default_queueObject



56
57
58
59
# File 'lib/easyop/plugins/async.rb', line 56

def _async_default_queue
  @_async_default_queue ||
    (superclass.respond_to?(:_async_default_queue) ? superclass._async_default_queue : "default")
end

#call_async(attrs = {}, wait: nil, wait_until: nil, queue: nil, **extra_attrs) ⇒ Object

Enqueue the operation as a background job.

MyOp.call_async(email: "x@y.com")
MyOp.call_async(email: "x@y.com", wait: 5.minutes, queue: "low")


46
47
48
49
50
51
52
53
54
# File 'lib/easyop/plugins/async.rb', line 46

def call_async(attrs = {}, wait: nil, wait_until: nil, queue: nil, **extra_attrs)
  merged_attrs = attrs.merge(extra_attrs)
  _async_ensure_active_job!
  job = Easyop::Plugins::Async.job_class
  job = job.set(queue: queue || _async_default_queue)
  job = job.set(wait: wait)             if wait
  job = job.set(wait_until: wait_until) if wait_until
  job.perform_later(name, _async_serialize(merged_attrs))
end

#queue(name) ⇒ Object

Declares a non-default queue for this operation class and its subclasses.

Examples:

class Weather::BaseOperation < ApplicationOperation
  queue :weather
end

Parameters:

  • name (String, Symbol)

    queue name



38
39
40
# File 'lib/easyop/plugins/async.rb', line 38

def queue(name)
  @_async_default_queue = name.to_s
end