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