@logger = Logger.new(STDOUT)

######################################################################### # Determine model class from filename. ######################################################################### def determine_model(path)

path =~ /(.*)\/(.*).rb/
$2.camelize.constantize rescue nil # nil happens

end

######################################################################### # Return array of all models found in application. ######################################################################### def all_models()

models = []
DrgCms.paths(:forms).each do |path|
  models_dir = File.expand_path("../models", path)
  Dir["#{models_dir}/*.rb"].each do |model_file| 
    model = determine_model(model_file)
    models << model if model and model.respond_to?(:index_specifications)
  end
end
models

end

######################################################################### # ######################################################################### namespace :drg_cms do

desc "Create indexes for all mongoid models. Including those in gem plugins."
task :create_indexes => :environment do
  @logger.info( "MONGOID: Checking indexes.")
  Mongoid::Tasks::Database.create_indexes(all_models)
end

desc "Remove undefined indexes for all mongoid models. Including those in gem plugins."
task :remove_undefined_indexes => :environment do
  @logger.info( "MONGOID: Remove undefined indexes.")
  Mongoid::Tasks::Database.remove_undefined_indexes(all_models)
end

end