Sha256: 6a83f3a7009f9af35af8b1414de600930b90b373d037fa02c8a10fb12b5fb20b

Contents?: true

Size: 1.44 KB

Versions: 1

Compression:

Stored size: 1.44 KB

Contents

# frozen_string_literal: true

module DispatchRider
  class Configuration
    attr_accessor(
      :handler_path,
      :error_handler,
      :queue_info,
      :queue_kind,
      :subscriber,
      :logger,
      :log_formatter,
      :debug,
      :additional_info_injector
    )
    attr_reader :callbacks

    def initialize
      @handler_path = Dir.getwd + "/app/handlers"
      @error_handler = DispatchRider::DefaultErrorHandler
      @queue_kind = :file_system
      @queue_info = { path: "tmp/dispatch-rider-queue" }
      @callbacks = Callbacks::Storage.new
      @subscriber = DispatchRider::Subscriber
      @log_formatter = DispatchRider::Logging::TextFormatter.new
      @additional_info_injector = -> (data) { data }
      @logger = Logger.new($stderr)
      @debug = false

      @callbacks.around(:dispatch_message) do |job, message|
        Logging::LifecycleLogger.wrap_handling(message) do
          job.call
        end
      end
    end

    delegate :before, :after, :around, :to => :callbacks

    def default_retry_timeout=(val)
      DispatchRider::Handlers::Base.set_default_retry(val)
    end

    def handlers
      @handlers ||= begin
        load_handler_files
        DispatchRider::Handlers::Base.subclasses.map { |klass| klass.name.underscore.to_sym }
      end
    end

    private

    def load_handler_files
      Dir["#{@handler_path}/**/*.rb"].each do |filename|
        require filename.gsub(/\.rb$/, '')
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
dispatch-rider-2.2.0 lib/dispatch-rider/configuration.rb