lib/queuel.rb in queuel-0.0.1 vs lib/queuel.rb in queuel-0.1.0
- old
+ new
@@ -1,28 +1,40 @@
require "queuel/version"
require "forwardable"
-require "queuel/null/message"
+require "queuel/configurator"
+require "queuel/introspect"
+
+require "queuel/base/engine"
+require "queuel/base/queue"
+require "queuel/base/message"
+require "queuel/base/poller"
+
require "queuel/null/engine"
-require "queuel/null/poller"
require "queuel/null/queue"
-require "queuel/iron_mq/message"
+require "queuel/null/message"
+require "queuel/null/poller"
+
require "queuel/iron_mq/engine"
-require "queuel/iron_mq/poller"
require "queuel/iron_mq/queue"
+require "queuel/iron_mq/message"
+require "queuel/iron_mq/poller"
+
require "queuel/client"
module Queuel
+ extend Introspect
class << self
extend Forwardable
def_delegators :client, :push, :pop, :receive, :with
- def_delegators :config, :credentials, :default_queue
+ def_delegators :config, :credentials, :default_queue, :receiver_threads
alias << pop
end
def self.engine
requires
- Object.module_eval("::#{const_name}", __FILE__, __LINE__)
+ warn_engine_selection
+ const_with_nesting engine_const_name
end
def self.configure(&block)
config.instance_eval &block
end
@@ -33,36 +45,47 @@
def self.client
Client.new engine, credentials
end
- def self.engines
- {
- iron_mq: { require: 'iron_mq', const: "IronMq" },
- null: { const: "Null" }
+ def self.logger
+ config.logger.tap { |log|
+ log.level = config.log_level
}
end
- def self.requires
- require engines[config.engine][:require] if engines.fetch(config.engine, {})[:require]
+ private
+
+ def self.warn_engine_selection
+ @warned_null_engine ||= logger.warn(engine_config[:message])
end
- def self.const_name
- "Queuel::#{engines.fetch(config.engine, {}).fetch(:const, nil) || engines[:null][:const]}::Engine"
+ def self.engine_config
+ engines.fetch(config.engine) { engines[:null] }
end
- class Configurator
- def self.param(*params)
- params.each do |name|
- attr_accessor name
- define_method name do |*values|
- value = values.first
- value ? self.send("#{name}=", value) : instance_variable_get("@#{name}")
- end
- end
- end
+ def self.configured_engine_name
+ engine_config[:const]
+ end
- param :credentials
- param :engine
- param :default_queue
+ def self.engines
+ {
+ iron_mq: {
+ require: 'iron_mq',
+ const: "IronMq",
+ message: "Using IronMQ"
+ },
+ null: {
+ const: "Null",
+ message: "Using Null Engine, for compatability."
+ }
+ }
+ end
+
+ def self.requires
+ require engine_config[:require] if engine_config[:require]
+ end
+
+ def self.engine_const_name
+ "Queuel::#{configured_engine_name}::Engine"
end
end