module Mongoid::Tasks::Database

Public Instance Methods

remove_indexes(models = ::Mongoid.models) click to toggle source
# File lib/patches/db_commands.rb, line 134
def remove_indexes(models = ::Mongoid.models)
  models.each do |model|
    next if model.embedded?
    begin
      indexes = model.collection.indexes.map{ |doc| doc["name"] }
      indexes.delete_one("_id_")
      model.remove_indexes
    rescue Moped::Errors::OperationFailure
      next
    end
    logger.info("MONGOID: Removing indexes on: #{model} for: #{indexes.join(', ')}.")
    model
  end.compact
end
undefined_indexes(models = ::Mongoid.models) click to toggle source
# File lib/patches/db_commands.rb, line 109
def undefined_indexes(models = ::Mongoid.models)
  undefined_by_model = {}

  models.each do |model|
    unless model.embedded?
      begin
        model.collection.indexes.each do |index|
            # ignore default index
            unless index['name'] == '_id_'
              key = index['key'].symbolize_keys
              spec = model.index_specification(key)
              unless spec
                # index not specified
                undefined_by_model[model] ||= []
                undefined_by_model[model] << index
              end
            end
        end
      rescue Moped::Errors::OperationFailure; end
    end
  end

  undefined_by_model
end