Sha256: b4c0d6cdd3eff24f1c502f42e4d5619ad96b25357b13bf4e20bb66afe90185b9

Contents?: true

Size: 1.15 KB

Versions: 15

Compression:

Stored size: 1.15 KB

Contents

# frozen_string_literal: true

module Karafka
  module ActiveJob
    # Allows for setting karafka specific options in ActiveJob jobs
    module JobExtensions
      class << self
        # Defines all the needed accessors and sets defaults
        # @param klass [ActiveJob::Base] active job base
        def extended(klass)
          klass.class_attribute :_karafka_options
          klass._karafka_options = {}
        end
      end

      # @param new_options [Hash] additional options that allow for jobs Karafka related options
      #   customization
      # @return [Hash] karafka options
      def karafka_options(new_options = {})
        return _karafka_options if new_options.empty?

        # Make sure, that karafka options that someone wants to use are valid before assigning
        # them
        App.config.internal.active_job.job_options_contract.validate!(new_options)

        # We need to modify this hash because otherwise we would modify parent hash.
        self._karafka_options = _karafka_options.dup

        new_options.each do |name, value|
          _karafka_options[name] = value
        end

        _karafka_options
      end
    end
  end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
karafka-2.4.17 lib/karafka/active_job/job_extensions.rb
karafka-2.4.16 lib/karafka/active_job/job_extensions.rb
karafka-2.4.15 lib/karafka/active_job/job_extensions.rb
karafka-2.4.14 lib/karafka/active_job/job_extensions.rb
karafka-2.4.13 lib/karafka/active_job/job_extensions.rb
karafka-2.4.12 lib/karafka/active_job/job_extensions.rb
karafka-2.4.11 lib/karafka/active_job/job_extensions.rb
karafka-2.4.10 lib/karafka/active_job/job_extensions.rb
karafka-2.4.9 lib/karafka/active_job/job_extensions.rb
karafka-2.4.8 lib/karafka/active_job/job_extensions.rb
karafka-2.4.7 lib/karafka/active_job/job_extensions.rb
karafka-2.4.6 lib/karafka/active_job/job_extensions.rb
karafka-2.4.5 lib/karafka/active_job/job_extensions.rb
karafka-2.4.4 lib/karafka/active_job/job_extensions.rb
karafka-2.4.3 lib/karafka/active_job/job_extensions.rb