From 0e13a1026e46cd674ff9df92d419c321f24a321b Mon Sep 17 00:00:00 2001 From: Priit Tark Date: Mon, 23 Feb 2015 18:18:25 +0200 Subject: [PATCH] Added rake db:all:drop rake tasks and check init_settings --- config/initializers/initial_settings.rb | 2 +- lib/tasks/db.rake | 59 ++++++++++++++++++++----- 2 files changed, 48 insertions(+), 13 deletions(-) diff --git a/config/initializers/initial_settings.rb b/config/initializers/initial_settings.rb index 97743775f..84090c28d 100644 --- a/config/initializers/initial_settings.rb +++ b/config/initializers/initial_settings.rb @@ -1,4 +1,4 @@ -if ActiveRecord::Base.connection.table_exists? 'settings' # otherwise rake not working 100% +if ActiveRecord::Base.connected? && ActiveRecord::Base.connection.table_exists?('settings') # otherwise rake not working 100% Setting.disclosure_name = true if Setting.disclosure_name.nil? Setting.disclosure_name = true if Setting.disclosure_name.nil? Setting.disclosure_org_name = true if Setting.disclosure_org_name.nil? diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake index 73f217711..9f7a0a839 100644 --- a/lib/tasks/db.rake +++ b/lib/tasks/db.rake @@ -1,16 +1,14 @@ namespace :db do - def databases - @db ||= ["api_log_#{Rails.env}", "whois_#{Rails.env}", "#{Rails.env}"] + def other_databases + @db ||= ["api_log_#{Rails.env}", "whois_#{Rails.env}"] end def schema_file(db) case db - when databases.first + when "api_log_#{Rails.env}" 'api_log_schema.rb' - when databases.second + when "whois_#{Rails.env}" 'whois_schema.rb' - when databases.third - 'schema.rb' end end @@ -24,11 +22,41 @@ namespace :db do desc 'Create all databases: registry, api_log and whois' task create: [:environment] do - databases.each do |name| + puts "\n---------------------------- Create main database ----------------------------------------\n" + Rake::Task['db:create'].invoke + + other_databases.each do |name| begin - conf = ActiveRecord::Base.configurations + puts "\n---------------------------- Create #{name} ----------------------------------------\n" ActiveRecord::Base.clear_all_connections! - ActiveRecord::Base.connection.create_database(conf[name]['database'], conf[name]) + conf = ActiveRecord::Base.configurations + ActiveRecord::Base.connection.create_database(conf[name]['database'].to_sym, conf[name]) + rescue => e + puts "\n#{e}" + end + end + end + + desc 'Drop all databaseses: registry, api_log and whois' + task drop: [:environment] do + # just in case we allow only drop test, comment it out please for temp + return unless Rails.env.test? + + puts "\n---------------------------- Drop main database ----------------------------------------\n" + Rake::Task['db:drop'].invoke + + other_databases.each do |name| + begin + puts "\n---------------------------- #{name} dropped ----------------------------------------\n" + ActiveRecord::Base.clear_all_connections! + ActiveRecord::Base.establish_connection(name.to_sym) + + conf = ActiveRecord::Base.configurations + if ActiveRecord::Tasks::DatabaseTasks.drop(conf[name]) + puts "#{conf[name]['database']} dropped" + else + puts "Didn't find database #{name}, no drop" + end rescue => e puts "\n#{e}" end @@ -38,9 +66,13 @@ namespace :db do namespace :schema do desc 'Schema load for all databases: registry, api_log and whois' task load: [:environment] do - databases.each do |name| + puts "\n---------------------------- Main schema load ----------------------------------------\n" + Rake::Task['db:schema:load'].invoke + + other_databases.each do |name| begin - puts "\n---------------------------- #{name} ----------------------------------------\n" + puts "\n---------------------------- #{name} schema loaded ----------------------------------------\n" + ActiveRecord::Base.clear_all_connections! ActiveRecord::Base.establish_connection(name.to_sym) if ActiveRecord::Base.connection.table_exists?('schema_migrations') puts 'Found tables, skip schema load!' @@ -55,7 +87,10 @@ namespace :db do desc 'Schema load for all databases: registry, api_log and whois' task dump: [:environment] do - databases.each do |name| + puts "\n---------------------------- Main schema load ----------------------------------------\n" + Rake::Task['db:schema:dump'].invoke + + other_databases.each do |name| begin puts "\n---------------------------- #{name} ----------------------------------------\n" filename = "#{Rails.root}/db/#{schema_file(name)}"