lib/mail_room/delivery/sidekiq.rb in mail_room-0.8.1 vs lib/mail_room/delivery/sidekiq.rb in mail_room-0.9.0
- old
+ new
@@ -6,18 +6,19 @@
module MailRoom
module Delivery
# Sidekiq Delivery method
# @author Douwe Maan
class Sidekiq
- Options = Struct.new(:redis_url, :namespace, :queue, :worker) do
+ Options = Struct.new(:redis_url, :namespace, :sentinels, :queue, :worker) do
def initialize(mailbox)
redis_url = mailbox.delivery_options[:redis_url] || "redis://localhost:6379"
namespace = mailbox.delivery_options[:namespace]
+ sentinels = mailbox.delivery_options[:sentinels]
queue = mailbox.delivery_options[:queue] || "default"
worker = mailbox.delivery_options[:worker]
- super(redis_url, namespace, queue, worker)
+ super(redis_url, namespace, sentinels, queue, worker)
end
end
attr_accessor :options
@@ -38,17 +39,23 @@
end
private
def client
- client = Redis.new(url: options.redis_url)
+ @client ||= begin
+ sentinels = options.sentinels
+ redis_options = { url: options.redis_url }
+ redis_options[:sentinels] = sentinels if sentinels
- namespace = options.namespace
- if namespace
- require 'redis/namespace'
- Redis::Namespace.new(namespace, redis: client)
- else
- client
+ redis = ::Redis.new(redis_options)
+
+ namespace = options.namespace
+ if namespace
+ require 'redis/namespace'
+ Redis::Namespace.new(namespace, redis: redis)
+ else
+ redis
+ end
end
end
def item_for(message)
{