Sha256: 8837b596efccb065aa1c134c27d9007ef27cbf4979d5b67901cb97555f8f6398

Contents?: true

Size: 1.06 KB

Versions: 33

Compression:

Stored size: 1.06 KB

Contents

# frozen_string_literal: true

module Totoro
  class Initializer
    DEFAULT_CONFIG = %i[default connect queue].freeze
    def execute
      config = Rails.application.config_for(:totoro).with_indifferent_access
      # set default queue class
      Totoro.const_set('Queue', default_queue_class(config))
      # set custom queue class
      (config.symbolize_keys.keys - DEFAULT_CONFIG).each do |prefix|
        prefix_module(prefix, queue_class(prefix))
      end
    end

    private

    def default_queue_class(config)
      if config.key?(:default)
        queue_class(:default)
      else
        Class.new(Totoro::BaseQueue)
      end
    end

    def queue_class(prefix)
      custom_queue_class = Class.new(Totoro::BaseQueue)
      custom_queue_class.define_singleton_method('config') do
        @config ||= Totoro::Config.new(prefix)
      end
      custom_queue_class
    end

    def prefix_module(prefix, custom_queue_class)
      prefix_module = Totoro.const_set(prefix.to_s.camelize, Module.new)
      prefix_module.const_set('Queue', custom_queue_class)
    end
  end
end

Version data entries

33 entries across 32 versions & 1 rubygems

Version Path
totoro-1.0.7 lib/totoro/initializer.rb
totoro-1.0.6 pkg/totoro-1.0.5/lib/totoro/initializer.rb
totoro-1.0.6 lib/totoro/initializer.rb
totoro-1.0.5 lib/totoro/initializer.rb
totoro-1.0.4 lib/totoro/initializer.rb
totoro-1.0.3 lib/totoro/initializer.rb
totoro-1.0.2 lib/totoro/initializer.rb
totoro-1.0.1 lib/totoro/initializer.rb
totoro-1.0.0 lib/totoro/initializer.rb
totoro-0.6.1 lib/totoro/initializer.rb
totoro-0.6.0 lib/totoro/initializer.rb
totoro-0.5.7 lib/totoro/initializer.rb
totoro-0.5.6 lib/totoro/initializer.rb
totoro-0.5.5 lib/totoro/initializer.rb
totoro-0.5.4 lib/totoro/initializer.rb
totoro-0.5.3 lib/totoro/initializer.rb
totoro-0.5.2 lib/totoro/initializer.rb
totoro-0.5.1 lib/totoro/initializer.rb
totoro-0.5.0 lib/totoro/initializer.rb
totoro-0.4.1 lib/totoro/initializer.rb