internetee-registry/lib/tasks/db.rake
2017-05-05 11:52:28 +03:00

68 lines
2.1 KiB
Ruby

namespace :db do
namespace :setup do
desc 'Create all databases: api_log and whois'
task all: [:environment, :load_config] do
Rake::Task['db:create:all'].invoke
Rake::Task['db:structure:load'].invoke
Rake::Task['db:schema:load:all'].invoke
ActiveRecord::Base.clear_all_connections!
ActiveRecord::Base.establish_connection(Rails.env.to_sym)
puts "\n---------------------------- Import seed ----------------------------------------\n"
Rake::Task['db:seed'].invoke
puts "\n All done!\n\n"
end
end
namespace :schema do
def other_databases
@other_dbs ||= ["api_log_#{Rails.env}", "whois_#{Rails.env}"]
end
def schema_file(db)
case db
when "api_log_#{Rails.env}"
'api_log_schema.rb'
when "whois_#{Rails.env}"
'whois_schema.rb'
end
end
namespace :load do
desc 'Schema load for all databases: api_log and whois'
task all: [:environment, :load_config] do
other_databases.each do |name|
begin
puts "\n------------------------ #{name} schema loading -----------------------------\n"
ActiveRecord::Base.clear_all_connections!
ActiveRecord::Base.establish_connection(name.to_sym)
load("#{Rails.root}/db/#{schema_file(name)}")
rescue => e
puts "\n#{e}"
end
end
end
end
namespace :dump do
desc 'Schema dump for all databases: api_log and whois'
task all: [:environment, :load_config] do
puts "\n---------------------------- #{Rails.env} schema dump--------------\n"
other_databases.each do |name|
begin
puts "\n---------------------------- #{name} ----------------------------------------\n"
filename = "#{Rails.root}/db/#{schema_file(name)}"
File.open(filename, 'w:utf-8') do |file|
ActiveRecord::Base.establish_connection(name.to_sym)
ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file)
end
rescue => e
puts "\n#{e}"
end
end
end
end
end
end