class DatabaseCleaner::Redis::Deletion

Public Class Methods

new(only: [], except: []) click to toggle source
# File lib/database_cleaner/redis/deletion.rb, line 6
def initialize only: [], except: []
  @only = only
  @except = except
end

Public Instance Methods

clean() click to toggle source
# File lib/database_cleaner/redis/deletion.rb, line 11
def clean
  if @only.none? && @except.none?
    connection.flushdb
  else
    keys_to_delete.each do |key|
      connection.del key
    end
  end

  connection.quit unless db == :default
end

Private Instance Methods

connection() click to toggle source
# File lib/database_cleaner/redis/deletion.rb, line 36
def connection
  @connection ||= begin
    if db == :default
      ::Redis.new
    elsif db.is_a?(::Redis) # pass directly the connection
      db
    else
      ::Redis.new(url: db)
    end
  end
end
expand_keys(keys) click to toggle source
# File lib/database_cleaner/redis/deletion.rb, line 32
def expand_keys keys
  keys.flat_map { |key| connection.keys(key) }
end
keys_to_delete() click to toggle source
# File lib/database_cleaner/redis/deletion.rb, line 25
def keys_to_delete
  only = expand_keys(@only)
  except = expand_keys(@except)
  only = connection.keys if only.none?
  (only - except)
end