Sha256: a85e93c3357c6b91a412418b9deca0ffd73109630e2f75e22b4057abd10b40dd
Contents?: true
Size: 1.77 KB
Versions: 2
Compression:
Stored size: 1.77 KB
Contents
require 'database_cleaner/mongo/base' require 'database_cleaner/generic/base' require 'database_cleaner/generic/truncation' require 'database_cleaner/mongo/truncation_mixin' module DatabaseCleaner module Mongo class Truncation include ::DatabaseCleaner::Generic::Base include ::DatabaseCleaner::Generic::Truncation include TruncationMixin include Base private def database db end def collections_cache @@collections_cache ||= {} end def mongoid_collection_names @@mongoid_collection_names ||= Hash.new{|h,k| h[k]=[]}.tap do |names| ObjectSpace.each_object(Class) do |klass| (names[klass.db.name] << klass.collection_name) if valid_collection_name?(klass) end end end def not_caching(db_name, list) @@not_caching ||= {} unless @@not_caching.has_key?(db_name) @@not_caching[db_name] = true puts "Not caching collection names for db #{db_name}. Missing these from models: #{list}" end end def collections return collections_cache[database.name] if collections_cache.has_key?(database.name) db_collections = database.collections.select { |c| c.name !~ /^system\./ } missing_collections = mongoid_collection_names[database.name] - db_collections.map(&:name) if missing_collections.empty? collections_cache[database.name] = db_collections else not_caching(database.name, missing_collections) end db_collections end private def valid_collection_name?(klass) klass.ancestors.map(&:to_s).include?('Mongoid::Document') && !klass.embedded && !klass.collection_name.empty? end end end end
Version data entries
2 entries across 2 versions & 2 rubygems
Version | Path |
---|---|
database_cleaner-mongo-1.8.1 | lib/database_cleaner/mongo/truncation.rb |
database_cleaner-1.8.5 | adapters/database_cleaner-mongo/lib/database_cleaner/mongo/truncation.rb |