Sha256: 24ed82ade9ee8fbe833ef4762c5f07a15b314d011309b9e5097cd344d19fea71

Contents?: true

Size: 795 Bytes

Versions: 26

Compression:

Stored size: 795 Bytes

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.
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 ||= DiscoApp::Shop.find_by!(shopify_domain: job.arguments.first)
    end

    def shop_context(job, block)
      @shop.temp {
        block.call(job.arguments)
      }
    end

end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
disco_app-0.6.1 app/jobs/disco_app/shop_job.rb
disco_app-0.6.2 app/jobs/disco_app/shop_job.rb
disco_app-0.6.3 app/jobs/disco_app/shop_job.rb
disco_app-0.6.4 app/jobs/disco_app/shop_job.rb
disco_app-0.6.5 app/jobs/disco_app/shop_job.rb
disco_app-0.6.6 app/jobs/disco_app/shop_job.rb
disco_app-0.6.7 app/jobs/disco_app/shop_job.rb
disco_app-0.6.8 app/jobs/disco_app/shop_job.rb
disco_app-0.6.9 app/jobs/disco_app/shop_job.rb
disco_app-0.7.0 app/jobs/disco_app/shop_job.rb
disco_app-0.7.1 app/jobs/disco_app/shop_job.rb
disco_app-0.7.2 app/jobs/disco_app/shop_job.rb
disco_app-0.8.0 app/jobs/disco_app/shop_job.rb
disco_app-0.8.1 app/jobs/disco_app/shop_job.rb
disco_app-0.8.2 app/jobs/disco_app/shop_job.rb
disco_app-0.8.3 app/jobs/disco_app/shop_job.rb
disco_app-0.8.4 app/jobs/disco_app/shop_job.rb
disco_app-0.8.5 app/jobs/disco_app/shop_job.rb
disco_app-0.8.6 app/jobs/disco_app/shop_job.rb
disco_app-0.8.7 app/jobs/disco_app/shop_job.rb