require 'mysql2' require 'yaml' require 'zlib' require 'global_shared_db'
namespace :global_shared_db do
desc "create database" task :create do Rake::Task['environment'].invoke rescue nil puts "Create #{GlobalSharedDb::TaskHelper.current_db}" ActiveRecord::Tasks::DatabaseTasks.create(GlobalSharedDb.db_config) end desc "migrate database" task :migrate => :environment do GlobalSharedDb::TaskHelper.connect_shared_db puts "Migrate #{GlobalSharedDb::TaskHelper.current_db}" migrate! end desc "roolback database" task :rollback => :environment do GlobalSharedDb::TaskHelper.connect_shared_db puts "Rollback #{GlobalSharedDb::TaskHelper.current_db}" ActiveRecord::Migrator.rollback(GlobalSharedDb::TaskHelper::MIGRATE_PATH) end desc "migrate cms tables" task :migrate_cms_tables => :environment do GlobalSharedDb::TaskHelper.connect_shared_db end desc 'shared db schema dump' task :schema_dump => :environment do GlobalSharedDb::TaskHelper.connect_shared_db require 'active_record/schema_dumper' File.open('./db/global_shared_db_schema.rb', 'w:utf-8') do |file| ActiveRecord::SchemaDumper.dump(GlobalSharedDb::BaseDb.connection, file) end end if GlobalSharedDb.env != 'production' desc "delete database" task :drop => :environment do GlobalSharedDb::TaskHelper.connect_shared_db puts "Drop #{GlobalSharedDb::TaskHelper.current_db}" ActiveRecord::Tasks::DatabaseTasks.drop( GlobalSharedDb::BaseDb.connection_pool.spec.config.stringify_keys ) end end desc 'shared db schema load' task :schema_load => :environment do file = './db/global_shared_db_schema.rb' put "can not execute this task in production!!!" if GlobalSharedDb.env == 'production' if GlobalSharedDb.env != 'production' && File.exist?(file) ActiveRecord::Tasks::DatabaseTasks.load_schema_for(GlobalSharedDb.db_config, :ruby, file) end end desc 'migration status' task :migration_status => :environment do GlobalSharedDb::TaskHelper.connect_shared_db ActiveRecord::Migrator.migrations_path = GlobalSharedDb::TaskHelper::MIGRATE_PATH Rake::Task['db:migrate:status'].invoke end desc 'current migration verson' task :db_verson => :environment do GlobalSharedDb::TaskHelper.connect_shared_db Rake::Task['db:version'].invoke end def migrate! if ar_below_520? ActiveRecord::Migrator.migrate(GlobalSharedDb::TaskHelper::MIGRATE_PATH) else ActiveRecord::MigrationContext.new(GlobalSharedDb::TaskHelper::MIGRATE_PATH).migrate end end def ar_below_520? ActiveRecord.gem_version < Gem::Version.new("5.2.0") end
end