1
0
Fork 0
mirror of https://github.com/mperham/sidekiq.git synced 2022-11-09 13:52:34 -05:00

Merge pull request #444 from mperham/generic_redis_provider

Allow generic Redis providers via env var
This commit is contained in:
Mike Perham 2012-10-15 20:37:52 -07:00
commit d3499a3609
3 changed files with 59 additions and 1 deletions

View file

@ -1,3 +1,8 @@
HEAD
-----------
- Allow generic Redis provider as environment variable. [#443]
2.3.3
-----------

View file

@ -5,7 +5,7 @@ require 'redis/namespace'
module Sidekiq
class RedisConnection
def self.create(options={})
url = options[:url] || ENV['REDISTOGO_URL'] || 'redis://localhost:6379/0'
url = options[:url] || determine_redis_provider || 'redis://localhost:6379/0'
driver = options[:driver] || 'ruby'
# need a connection for Fetcher and Retry
size = options[:size] || (Sidekiq.server? ? (Sidekiq.options[:concurrency] + 2) : 5)
@ -24,5 +24,12 @@ module Sidekiq
end
end
private_class_method :build_client
# Not public
def self.determine_redis_provider
return ENV['REDISTOGO_URL'] if ENV['REDISTOGO_URL']
provider = ENV['REDIS_PROVIDER'] || 'REDIS_URL'
ENV[provider]
end
end
end

View file

@ -0,0 +1,46 @@
require 'helper'
require 'sidekiq/redis_connection'
class TestRedisConnection < MiniTest::Unit::TestCase
describe ".create" do
def with_env_var(var, uri, skip_provider=false)
vars = ['REDISTOGO_URL', 'REDIS_PROVIDER', 'REDIS_URL'] - [var]
vars.each do |v|
next if skip_provider
ENV[v] = nil
end
ENV[var] = uri
assert_equal uri, Sidekiq::RedisConnection.determine_redis_provider
ENV[var] = nil
end
describe "with REDISTOGO_URL set" do
it "sets connection URI to RedisToGo" do
with_env_var 'REDISTOGO_URL', 'redis://redis-to-go:6379/0'
end
end
describe "with REDIS_PROVIDER set" do
it "sets connection URI to the provider" do
uri = 'redis://sidekiq-redis-provider:6379/0'
provider = 'SIDEKIQ_REDIS_PROVIDER'
ENV['REDIS_PROVIDER'] = provider
ENV[provider] = uri
with_env_var provider, uri, true
ENV[provider] = nil
end
end
describe "with REDIS_URL set" do
it "sets connection URI to custom uri" do
with_env_var 'REDIS_URL', 'redis://redis-uri:6379/0'
end
end
end
end