require 'fontana_client_support' include Fontana::ServerRake
include Fontana::CommandUtils
tasks_without_desc = %w[drop seed summary create] mongoid_tasks = %w[create_indexes remove_indexes]
[:development, :test].each do |app_mode|
options = { env: { FONTANA_APP_MODE: app_mode.to_s } } namespace app_mode do namespace_with_fontana :db, :"db" do tasks_without_desc.each do |t| fontana_task t.to_sym, options end end namespace_with_fontana :db, :"db:mongoid" do mongoid_tasks.each do |t| fontana_task t.to_sym, options end end end
end
namespace :db do
(tasks_without_desc + mongoid_tasks).each do |t| task t.to_sym => :"development:db:#{t}" end namespace :drop do if FontanaClientSupport.root_dir basename = File.basename(FontanaClientSupport.root_dir) db_names = `mongo --quiet --eval "db.adminCommand('listDatabases')['databases'].map(function(db){ return db.name }).filter(function(db){ return db.match(/#{basename}/)}).join(',')"`.strip.split(/,/) desc "CAUTION! drop databases: #{db_names.join(',')}" task :all do db_names.each do |db_name| system!(%Q!mongo --quiet --eval "db = db.getSiblingDB('#{db_name}'); printjson(db.dropDatabase())"!) end end else desc "CAUTION! drop databases for both development and test" task :all => [:"test:db:drop", :"development:db:drop"] end end
end