mirror of
https://github.com/internetee/registry.git
synced 2025-07-21 02:05:57 +02:00
added rake db:all:setup and friends
This commit is contained in:
parent
545e828fdf
commit
e20e577914
6 changed files with 153 additions and 87 deletions
73
lib/tasks/db.rake
Normal file
73
lib/tasks/db.rake
Normal file
|
@ -0,0 +1,73 @@
|
|||
namespace :db do
|
||||
def databases
|
||||
@db ||= ["#{Rails.env}", "api_log_#{Rails.env}", "whois_#{Rails.env}"]
|
||||
end
|
||||
|
||||
def schema_file(db)
|
||||
case db
|
||||
when databases.first
|
||||
'schema.rb'
|
||||
when databases.second
|
||||
'api_log_schema.rb'
|
||||
when databases.third
|
||||
'whois_schema.rb'
|
||||
end
|
||||
end
|
||||
|
||||
namespace :all do
|
||||
desc 'Create all databases: registry, api_log and whois'
|
||||
task :setup => [:environment] do
|
||||
Rake::Task['db:all:create'].invoke
|
||||
Rake::Task['db:all:schema:load'].invoke
|
||||
Rake::Task['db:seed'].invoke
|
||||
end
|
||||
|
||||
desc 'Create all databases: registry, api_log and whois'
|
||||
task :create => [:environment] do
|
||||
databases.each do |name|
|
||||
begin
|
||||
conf = ActiveRecord::Base.configurations
|
||||
ActiveRecord::Base.clear_all_connections!
|
||||
ActiveRecord::Base.connection.create_database(conf[name]['database'], conf[name])
|
||||
rescue => e
|
||||
puts "\n#{e}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
namespace :schema do
|
||||
desc 'Schema load for all databases: registry, api_log and whois'
|
||||
task :load => [:environment] do
|
||||
databases.each do |name|
|
||||
begin
|
||||
puts "\n---------------------------- #{name} ----------------------------------------\n"
|
||||
ActiveRecord::Base.establish_connection(name)
|
||||
if ActiveRecord::Base.connection.table_exists?('schema_migrations')
|
||||
puts 'Found tables, skip schema load!'
|
||||
else
|
||||
load("#{Rails.root}/db/#{schema_file(name)}")
|
||||
end
|
||||
rescue => e
|
||||
puts "\n#{e}"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
desc 'Schema load for all databases: registry, api_log and whois'
|
||||
task :dump => [:environment] do
|
||||
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)
|
||||
ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file)
|
||||
end
|
||||
rescue => e
|
||||
puts "\n#{e}"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,53 +0,0 @@
|
|||
DATABASES = [
|
||||
{ database: 'whois_public', host: 'localhost', adapter: 'postgresql', encoding: 'unicode',
|
||||
pool: '5', username: 'whois', password: 'test', port: '5432' },
|
||||
{ database: 'whois_private', host: 'localhost', adapter: 'postgresql', encoding: 'unicode',
|
||||
pool: '5', username: 'whois', password: 'test', port: '5432' }
|
||||
]
|
||||
|
||||
namespace :whois do
|
||||
task :load_config do
|
||||
require 'active_record'
|
||||
require 'pg'
|
||||
end
|
||||
|
||||
desc 'Create whois databases'
|
||||
task create: [:load_config] do
|
||||
DATABASES.each do |conf|
|
||||
create_database(conf)
|
||||
migrate
|
||||
end
|
||||
end
|
||||
|
||||
task 'Migrate whois databases'
|
||||
task migrate: [:load_config] do
|
||||
DATABASES.each do |conf|
|
||||
ActiveRecord::Base.establish_connection(conf)
|
||||
migrate
|
||||
end
|
||||
end
|
||||
|
||||
def create_database(conf)
|
||||
ActiveRecord::Base.establish_connection(conf.merge(database: 'postgres'))
|
||||
ActiveRecord::Base.connection.create_database(conf[:database])
|
||||
ActiveRecord::Base.establish_connection(conf)
|
||||
end
|
||||
|
||||
def migrate
|
||||
CreateWhoisBase.up
|
||||
end
|
||||
end
|
||||
|
||||
class CreateWhoisBase < ActiveRecord::Migration
|
||||
def self.up
|
||||
create_table :domains do |t|
|
||||
t.string :name
|
||||
t.text :body
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
|
||||
def self.down
|
||||
drob_table :domains
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue