class Totoro::Initializer

Constants

DEFAULT_CONFIG

Public Instance Methods

execute() click to toggle source
# File lib/totoro/initializer.rb, line 6
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 Instance Methods

default_queue_class(config) click to toggle source
# File lib/totoro/initializer.rb, line 18
def default_queue_class(config)
  if config.key?(:default)
    queue_class(:default)
  else
    Class.new(Totoro::BaseQueue)
  end
end
prefix_module(prefix, custom_queue_class) click to toggle source
# File lib/totoro/initializer.rb, line 34
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
queue_class(prefix) click to toggle source
# File lib/totoro/initializer.rb, line 26
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