class DatabaseCleaner::Base
def <=>(other)
def <=>(other) [orm, db] <=> [other.orm, other.db] end
def camelize(term)
def camelize(term) string = term.to_s string = string.sub(/^[a-z\d]*/) { |match| match.capitalize } string.gsub!(/(?:_|(\/))([a-z\d]*)/i) { "#{$1}#{$2.capitalize}" } string.gsub!("/", "::") string end
def clean_with(*args)
def clean_with(*args) strategy = create_strategy(*args) set_strategy_db strategy, db strategy.clean strategy end
def create_strategy(*args)
def create_strategy(*args) strategy, *strategy_args = args orm_strategy(strategy).new(*strategy_args) end
def db
def db @db ||= :default end
def db=(desired_db)
def db=(desired_db) @db = self.strategy_db = desired_db end
def initialize(orm = :null, opts = {})
def initialize(orm = :null, opts = {}) self.orm = orm self.db = opts[:connection] || opts[:model] if opts.has_key?(:connection) || opts.has_key?(:model) Safeguard.new.run end
def orm= orm
def orm= orm raise ArgumentError if orm.nil? @orm = orm.to_sym end
def orm_module
def orm_module orm_module_name = camelize(orm) DatabaseCleaner.const_get(orm_module_name) end
def orm_strategy(strategy)
def orm_strategy(strategy) strategy_module_name = strategy.to_s.capitalize orm_module.const_get(strategy_module_name) rescue NameError raise UnknownStrategySpecified, "The '#{strategy}' strategy does not exist for the #{orm} ORM! Available strategies: #{orm_module.available_strategies.join(', ')}" end
def set_strategy_db(strategy, desired_db)
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
def strategy
def strategy @strategy ||= NullStrategy.new end
def strategy=(args)
def strategy=(args) strategy, *strategy_args = args @strategy = if strategy.is_a?(Symbol) create_strategy(*args) elsif strategy_args.empty? 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, db end
def strategy_db=(desired_db)
def strategy_db=(desired_db) set_strategy_db(strategy, desired_db) end