class DatabaseCleaner::Base
Public Class Methods
new(desired_orm = nil,opts = {})
click to toggle source
# File lib/database_cleaner/base.rb, line 11 def initialize(desired_orm = nil,opts = {}) if [:autodetect, nil, "autodetect"].include?(desired_orm) autodetect else self.orm = desired_orm end self.db = opts[:connection] || opts[:model] if opts.has_key?(:connection) || opts.has_key?(:model) set_default_orm_strategy Safeguard.new.run end
Public Instance Methods
<=>(other)
click to toggle source
# File lib/database_cleaner/base.rb, line 7 def <=>(other) (self.orm <=> other.orm) == 0 ? self.db <=> other.db : self.orm <=> other.orm end
auto_detected?()
click to toggle source
# File lib/database_cleaner/base.rb, line 103 def auto_detected? !!@autodetected end
autodetect_orm()
click to toggle source
# File lib/database_cleaner/base.rb, line 107 def autodetect_orm if defined? ::ActiveRecord :active_record elsif defined? ::DataMapper :data_mapper elsif defined? ::MongoMapper :mongo_mapper elsif defined? ::Mongoid :mongoid elsif defined? ::CouchPotato :couch_potato elsif defined? ::Sequel :sequel elsif defined? ::Moped :moped elsif defined? ::Ohm :ohm elsif defined? ::Redis :redis elsif defined? ::Neo4j :neo4j end end
clean()
click to toggle source
# File lib/database_cleaner/base.rb, line 93 def clean strategy.clean end
Also aliased as: clean!
clean_with(*args)
click to toggle source
# File lib/database_cleaner/base.rb, line 44 def clean_with(*args) strategy = create_strategy(*args) set_strategy_db strategy, self.db strategy.clean strategy end
Also aliased as: clean_with!
cleaning(&block)
click to toggle source
# File lib/database_cleaner/base.rb, line 99 def cleaning(&block) strategy.cleaning(&block) end
create_strategy(*args)
click to toggle source
# File lib/database_cleaner/base.rb, line 39 def create_strategy(*args) strategy, *strategy_args = args orm_strategy(strategy).new(*strategy_args) end
db()
click to toggle source
# File lib/database_cleaner/base.rb, line 35 def db @db ||= :default end
db=(desired_db)
click to toggle source
# File lib/database_cleaner/base.rb, line 22 def db=(desired_db) self.strategy_db = desired_db @db = desired_db end
orm()
click to toggle source
# File lib/database_cleaner/base.rb, line 85 def orm @orm || autodetect end
orm=(desired_orm)
click to toggle source
# File lib/database_cleaner/base.rb, line 81 def orm=(desired_orm) @orm = desired_orm.to_sym end
set_strategy_db(strategy, desired_db)
click to toggle source
# File lib/database_cleaner/base.rb, line 54 def set_strategy_db(strategy, desired_db) if strategy.respond_to? :db= strategy.db = desired_db elsif desired_db != :default raise ArgumentError, "You must provide a strategy object that supports non default databases when you specify a database" end end
start()
click to toggle source
# File lib/database_cleaner/base.rb, line 89 def start strategy.start end
strategy()
click to toggle source
# File lib/database_cleaner/base.rb, line 77 def strategy @strategy ||= NullStrategy end
strategy=(args)
click to toggle source
# File lib/database_cleaner/base.rb, line 62 def strategy=(args) strategy, *strategy_args = args if strategy.is_a?(Symbol) @strategy = create_strategy(*args) elsif strategy_args.empty? @strategy = strategy else raise ArgumentError, "You must provide a strategy object, or a symbol for a known strategy along with initialization params." end set_strategy_db @strategy, self.db @strategy end
strategy_db=(desired_db)
click to toggle source
# File lib/database_cleaner/base.rb, line 27 def strategy_db=(desired_db) if strategy.respond_to? :db= strategy.db = desired_db elsif desired_db!= :default raise ArgumentError, "You must provide a strategy object that supports non default databases when you specify a database" end end
Private Instance Methods
autodetect()
click to toggle source
# File lib/database_cleaner/base.rb, line 148 def autodetect @autodetected = true @orm ||= autodetect_orm || raise(NoORMDetected, "No known ORM was detected! Is ActiveRecord, DataMapper, Sequel, MongoMapper, Mongoid, Moped, or CouchPotato, Redis or Ohm loaded?") end
orm_module()
click to toggle source
# File lib/database_cleaner/base.rb, line 133 def orm_module ::DatabaseCleaner.orm_module(orm) end
orm_strategy(strategy)
click to toggle source
# File lib/database_cleaner/base.rb, line 137 def orm_strategy(strategy) require "database_cleaner/#{orm.to_s}/#{strategy.to_s}" orm_module.const_get(strategy.to_s.capitalize) rescue LoadError if orm_module.respond_to? :available_strategies raise UnknownStrategySpecified, "The '#{strategy}' strategy does not exist for the #{orm} ORM! Available strategies: #{orm_module.available_strategies.join(', ')}" else raise UnknownStrategySpecified, "The '#{strategy}' strategy does not exist for the #{orm} ORM!" end end
set_default_orm_strategy()
click to toggle source
# File lib/database_cleaner/base.rb, line 155 def set_default_orm_strategy case orm when :active_record, :data_mapper, :sequel self.strategy = :transaction when :mongo_mapper, :mongoid, :couch_potato, :moped, :ohm, :redis self.strategy = :truncation when :neo4j self.strategy = :transaction end end