Merge pull request #504 from internetee/registry-503

Improve db setup
This commit is contained in:
Timo Võhmar 2017-05-10 12:23:50 +03:00 committed by GitHub
commit b478712f7c
5 changed files with 31 additions and 1273 deletions

View file

@ -9,9 +9,7 @@ before_script:
- "cp config/application-example.yml config/application.yml"
- "cp config/secrets-example.yml config/secrets.yml"
- "cp config/database-travis.yml config/database.yml"
- "RAILS_ENV=test bundle exec rake db:all:create"
- "RAILS_ENV=test bundle exec rake db:all:schema:load"
- "RAILS_ENV=test bundle exec rake db:migrate"
- "RAILS_ENV=test bundle exec rake db:setup:all"
script:
- "RAILS_ENV=test bundle exec rspec"
after_success:

View file

@ -44,7 +44,7 @@ Manual demo install and database setup:
bundle
cp config/application-example.yml config/application.yml # and edit it
cp config/database-example.yml config/database.yml # and edit it
bundle exec rake db:all:setup # for production, please follow deployment howto
bundle exec rake db:setup:all # for production, please follow deployment howto
bundle exec rake assets:precompile
### Apache with patched mod_epp (Debian 7/Ubuntu 14.04 LTS)

File diff suppressed because it is too large Load diff

View file

@ -3,7 +3,7 @@ Testing
Setup test databases:
RAILS_ENV=test rake db:all:setup
RAILS_ENV=test rake db:setup:all
Run basic test (no EPP tests):

View file

@ -1,57 +1,10 @@
Rake::Task["db:schema:load"].clear
Rake::Task["db:migrate"].enhance do
if ActiveRecord::Base.schema_format == :sql
Rake::Task["db:schema:dump"].invoke
end
end
Rake::Task["db:rollback"].enhance do
if ActiveRecord::Base.schema_format == :sql
Rake::Task["db:schema:dump"].invoke
end
end
Rake::Task["db:schema:dump"].enhance do
if ActiveRecord::Base.schema_format == :sql
File.rename('db/schema.rb', 'db/schema-read-only.rb')
Rake::Task["db:structure:dump"].invoke # for users who do manually db:schema:dump
end
end
namespace :db do
namespace :schema do
task load: [:environment, :load_config] do
puts 'Only rake db:structure:load is supported and invoked. ' \
'Otherwise zonefile generation does not work nor que.'
Rake::Task["db:structure:load"].invoke
end
end
def databases
@db ||= [Rails.env, "api_log_#{Rails.env}", "whois_#{Rails.env}"]
end
def other_databases
@other_dbs ||= ["api_log_#{Rails.env}", "whois_#{Rails.env}"]
end
def schema_file(db)
case db
when Rails.env
'structure.sql' # just in case
when "api_log_#{Rails.env}"
'api_log_schema.rb'
when "whois_#{Rails.env}"
'whois_schema.rb'
end
end
namespace :all do
desc 'Create all databases: registry, api_log and whois'
task setup: [:environment, :load_config] do
Rake::Task['db:all:create'].invoke
Rake::Task['db:all:schema:load'].invoke
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)
@ -60,81 +13,49 @@ namespace :db do
Rake::Task['db:seed'].invoke
puts "\n All done!\n\n"
end
end
desc 'Create all databases: registry, api_log and whois'
task create: [:environment, :load_config] do
databases.each do |name|
begin
puts "\n------------------------ Create #{name} ---------------------------------------\n"
ActiveRecord::Base.clear_all_connections!
conf = ActiveRecord::Base.configurations
if name == Rails.env
ActiveRecord::Tasks::DatabaseTasks.create_current
else
ActiveRecord::Base.connection.create_database(conf[name]['database'].to_sym, conf[name])
end
rescue => e
puts "\n#{e}"
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
desc 'Drop all databaseses: registry, api_log and whois'
task drop: [:environment, :load_config] do
# just in case we allow only drop test, comment it out only for temp
return unless Rails.env.test?
databases.each do |name|
begin
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
end
end
namespace :schema do
desc 'Schema load for all databases: registry, api_log and whois'
task load: [:environment, :load_config] do
puts "\n------------------------ #{Rails.env} structure loading -----------------------------\n"
Rake::Task['db:structure:load'].invoke
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)
if ActiveRecord::Base.connection.table_exists?('schema_migrations')
puts 'Found tables, skip schema load!'
else
load("#{Rails.root}/db/#{schema_file(name)}")
end
load("#{Rails.root}/db/#{schema_file(name)}")
rescue => e
puts "\n#{e}"
end
end
end
end
desc 'Schema dump for all databases: registry, api_log and whois'
task dump: [:environment, :load_config] do
puts "\n---------------------------- #{Rails.env} structure and schema dump--------------\n"
Rake::Task['db:schema:dump'].invoke # dumps both schema and structure
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)
ActiveRecord::Base.establish_connection(name.to_sym)
ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file)
end
rescue => e
@ -142,17 +63,6 @@ namespace :db do
end
end
end
# alias names
namespace :structure do
desc '(alias) Schema dump for all databases: registry, api_log and whois'
task :dump do
Rake::Task['db:all:schema:dump'].invoke
end
desc '(alias) Schema load for all databases: registry, api_log and whois'
task :load do
Rake::Task['db:all:schema:load'].invoke
end
end
end
end
end