Add the ability to pass directly the connection in Redis

Example usages:
* DatabaseCleaner[:redis].db = "redis://localhost:6379/0"
* DatabaseCleaner[:redis].db = Redis.new
This commit is contained in:
Kostas Diamantis 2015-12-22 11:59:01 +02:00
parent be18701c45
commit e3aa33a0ff
2 changed files with 24 additions and 7 deletions

View File

@ -22,10 +22,16 @@ module DatabaseCleaner
private
def connection
@connection ||= url == :default ? ::Redis.new : ::Redis.new(:url => url)
@connection ||= begin
if url == :default
::Redis.new
elsif db.class.is_a?(::Redis) # pass directly the connection
db
else
::Redis.new(:url => url)
end
end
end
end
end
end

View File

@ -1,4 +1,5 @@
require 'spec_helper'
require 'redis'
require 'database_cleaner/redis/base'
require 'database_cleaner/shared_strategy'
@ -18,10 +19,20 @@ module DatabaseCleaner
it { should respond_to(:db) }
it { should respond_to(:db=) }
it "should store my describe db" do
url = 'redis://localhost:6379/2'
subject.db = 'redis://localhost:6379/2'
subject.db.should eq url
context "when passing url" do
it "should store my describe db" do
url = 'redis://localhost:6379/2'
subject.db = 'redis://localhost:6379/2'
subject.db.should eq url
end
end
context "when passing connection" do
it "should store my describe db" do
connection = ::Redis.new :url => 'redis://localhost:6379/2'
subject.db = connection
subject.db.should eq connection
end
end
it "should default to :default" do