Sha256: bb97b0b6ef7e71296d0d77bc2d2cbe8c509a2e12a4826b15cffad5346345add5
Contents?: true
Size: 1 KB
Versions: 5
Compression:
Stored size: 1 KB
Contents
# The base class for all jobs that should be performed in the context of a # particular Shop's API session. The first argument to any job inheriting from # this class must be the domain of the relevant store, so that the appropriate # Shop model can be fetched and the temporary API session created. require 'rollbar' class DiscoApp::ShopJob < ActiveJob::Base queue_as :default before_perform { |job| find_shop(job) } before_enqueue { |job| find_shop(job) } around_enqueue { |job, block| shop_context(job, block) } around_perform { |job, block| shop_context(job, block) } private def find_shop(job) @shop ||= job.arguments.first.is_a?(DiscoApp::Shop) ? job.arguments.first : DiscoApp::Shop.find_by!(shopify_domain: job.arguments.first) end def shop_context(job, block) Rollbar.scoped(rollbar_scope) do @shop.with_api_context { block.call(job.arguments) } end end def rollbar_scope { person: { id: @shop.id, username: @shop.shopify_domain } } end end
Version data entries
5 entries across 5 versions & 1 rubygems