lib/rosetta_queue/adapter.rb in bmabey-rosetta_queue-0.1.3 vs lib/rosetta_queue/adapter.rb in bmabey-rosetta_queue-0.2.0
- old
+ new
@@ -2,32 +2,38 @@
module RosettaQueue
class Adapter
class << self
- attr_writer :user, :password, :host, :port
+ attr_writer :user, :password, :host, :port, :options
def define
yield self
end
-
+
def reset
- @user, @password, @host, @port, @adapter_class = nil, nil, nil, nil, nil
+ @user, @password, @host, @port, @options, @adapter_class = nil, nil, nil, nil, nil, nil
end
def type=(adapter_prefix)
- begin
- require "rosetta_queue/adapters/#{adapter_prefix}"
+ require "rosetta_queue/adapters/#{adapter_prefix}"
+ @adapter_class = RosettaQueue::Gateway.const_get("#{adapter_prefix.to_s.classify}Adapter")
+
rescue LoadError
raise AdapterException, "Adapter type '#{adapter_prefix}' does not match existing adapters!"
- end
- @adapter_class = RosettaQueue::Gateway.const_get("#{adapter_prefix.to_s.classify}Adapter")
end
def instance
raise AdapterException, "Adapter type was never defined!" unless @adapter_class
- @adapter_class.new(@user, @password, @host, @port)
+ @adapter_class.new({:user => @user, :password => @password, :host => @host, :port => @port, :opts => opts})
end
+ private
+
+ def opts
+ raise AdapterException, "Adapter options should be a hash" unless @options.nil? || @options.is_a?(Hash)
+ @options ||= {}
+ end
+
end
end
end