diff --git a/lib/phoenix_pubsub_redis/redis.ex b/lib/phoenix_pubsub_redis/redis.ex index 923e9dd..6d545e5 100644 --- a/lib/phoenix_pubsub_redis/redis.ex +++ b/lib/phoenix_pubsub_redis/redis.ex @@ -68,7 +68,7 @@ defmodule Phoenix.PubSub.Redis do compression_level = Keyword.get(opts, :compression_level, 0) opts = handle_url_opts(opts) - opts = Keyword.merge(@defaults, opts) + opts = merged_opts(opts) redis_opts = Keyword.take(opts, @redis_opts) node_name = opts[:node_name] || node() @@ -92,7 +92,7 @@ defmodule Phoenix.PubSub.Redis do Supervisor.init(children, strategy: :rest_for_one) end - + defp handle_url_opts(opts) do if opts[:url] do merge_url_opts(opts) @@ -116,6 +116,14 @@ defmodule Phoenix.PubSub.Redis do |> Keyword.merge(host: info.host, port: info.port || @defaults[:port]) end + defp merged_opts(opts) do + case Keyword.take(opts, [:sentinel]) do + [] -> Keyword.merge(@defaults, opts) + # Redix doesn't support host and port for Redis Sentinel + [_head | _tail] -> opts + end + end + defp validate_node_name!(node_name) do if node_name in [nil, :nonode@nohost] do raise ArgumentError, ":node_name is a required option for unnamed nodes"