Sha256: 993375b10cc09d5db22184d6f039d7d842b9c2550686972d5ab9661efad2004d
Contents?: true
Size: 1.05 KB
Versions: 2
Compression:
Stored size: 1.05 KB
Contents
# frozen_string_literal: true require "active_support/concern" require "active_support/core_ext/string/inflections" module Haku module Delayable extend ActiveSupport::Concern if defined?(ActiveJob::Base) class Job < ActiveJob::Base def perform(klass, params) klass.call(params) end end end class Delayed def initialize(service, options={}) @service = service @options = options.reverse_merge( job: "::Haku::Delayable::Job", queue: Haku.job_queue ) end def call(params={}) if job.present? && defined?(job) job.set(@options).perform_later(@service, params) else @service.call(params) end end private def job @job ||= begin job = @options.delete(:job) job.is_a?(String) ? job.safe_constantize : job end end end module ClassMethods def delayed(options={}) ::Haku::Delayable::Delayed.new(self, options) end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
haku-1.5.0 | lib/haku/delayable.rb |
haku-1.4.0 | lib/haku/delayable.rb |