Sha256: b81c51d4e78846539796e20c530eb9a22ebdba49a91d4fe38e06690722522bff
Contents?: true
Size: 1.96 KB
Versions: 1
Compression:
Stored size: 1.96 KB
Contents
require 'database_cleaner/generic/base' require 'active_record' require 'erb' module DatabaseCleaner module ActiveRecord def self.available_strategies %w[truncation transaction deletion] end def self.config_file_location=(path) @config_file_location = path end def self.config_file_location @config_file_location ||= "#{DatabaseCleaner.app_root}/config/database.yml" end module Base include ::DatabaseCleaner::Generic::Base attr_accessor :connection_hash def db=(desired_db) @db = desired_db load_config end def db @db || super end def load_config if self.db != :default && self.db.is_a?(Symbol) && File.file?(ActiveRecord.config_file_location) connection_details = YAML::load(ERB.new(IO.read(ActiveRecord.config_file_location)).result) @connection_hash = connection_details[self.db.to_s] end end def create_connection_class Class.new(::ActiveRecord::Base) end def connection_class @connection_class ||= if @db && !@db.is_a?(Symbol) @db elsif connection_hash lookup_from_connection_pool || establish_connection else ::ActiveRecord::Base end end private def lookup_from_connection_pool if ::ActiveRecord::Base.respond_to?(:descendants) database_name = connection_hash["database"] || connection_hash[:database] models = ::ActiveRecord::Base.descendants models.detect { |m| m.connection_pool.spec.config[:database] == database_name } end end def establish_connection strategy_class = create_connection_class strategy_class.send :establish_connection, connection_hash strategy_class end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
database_cleaner-1.0.0.RC1 | lib/database_cleaner/active_record/base.rb |