database_cleaner/examples/lib/redis_models.rb
James Conroy-Finn b70f09a3ed Add Redis & Ohm support
This contains the work of @hbpoison, updated to work with the current
version of DatabaseCleaner.

https://github.com/bmabey/database_cleaner/pull/87/files
2013-05-11 14:21:43 +01:00

65 lines
1.2 KiB
Ruby

require 'redis'
class RedisWidget
def self.redis
threaded ||= Redis.connect
end
def self.redis=(connection)
threaded = connection
end
def self.threaded
Thread.current[self.class.to_s] ||= {}
end
def initialize(options = {})
options = options.dup
@name = options[:name]
end
def connection
self.class.redis
end
def save
unless connection.get(self.class.to_s + ':id')
@id = 0
connection.set(self.class.to_s + ':id', @id)
end
@id = connection.incr(self.class.to_s + ':id')
connection.set(self.class.to_s + ':%d:name' % @id, @name)
end
def self.count
self.redis.keys(self.to_s + '*name').size
end
def self.create!
new(:name => 'some widget').save
end
end
class RedisWidgetUsingDatabaseOne < RedisWidget
def self.redis
threaded[self.class.to_s] ||= Redis.connect :url => ENV['REDIS_URL_ONE']
end
def self.create!
new(:name => 'a widget using database one').save
end
end
class RedisWidgetUsingDatabaseTwo < RedisWidget
def self.redis
threaded[self.class.to_s] ||= Redis.connect :url => ENV['REDIS_URL_TWO']
end
def self.create!
new(:name => 'a widget using database two').save
end
end