Sha256: 64ed01b7db68149b4caba719423b9362e72bca90145ea176aaf8bd97cb9af481

Contents?: true

Size: 828 Bytes

Versions: 13

Compression:

Stored size: 828 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.

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

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

  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
disco_app-0.3.0 app/jobs/disco_app/shop_job.rb
disco_app-0.4.0 app/jobs/disco_app/shop_job.rb
disco_app-0.4.1 app/jobs/disco_app/shop_job.rb
disco_app-0.4.2 app/jobs/disco_app/shop_job.rb
disco_app-0.4.3 app/jobs/disco_app/shop_job.rb
disco_app-0.4.4 app/jobs/disco_app/shop_job.rb
disco_app-0.5.0 app/jobs/disco_app/shop_job.rb
disco_app-0.5.1 app/jobs/disco_app/shop_job.rb
disco_app-0.5.2 app/jobs/disco_app/shop_job.rb
disco_app-0.5.3 app/jobs/disco_app/shop_job.rb
disco_app-0.5.4 app/jobs/disco_app/shop_job.rb
disco_app-0.5.5 app/jobs/disco_app/shop_job.rb
disco_app-0.5.6 app/jobs/disco_app/shop_job.rb