Sha256: 848bf82c1a4dd5a2762e24fe4918f3836400a56fc9a2b9742dac6be9aad44d52

Contents?: true

Size: 1.37 KB

Versions: 44

Compression:

Stored size: 1.37 KB

Contents

require 'schema_dev/config'

dbms = SchemaDev::Config.load.dbms

DATABASES = %w[schema_plus_test]

if dbms.any?
  {
    postgresql: { uservar: 'POSTGRESQL_DB_USER', defaultuser: 'schema_plus', create: "createdb -U '%{user}' %{dbname}", drop: "dropdb -U '%{user}' %{dbname}" },
    mysql:      { uservar: 'MYSQL_DB_USER', defaultuser: 'schema_plus', create: "mysqladmin -u '%{user}' create %{dbname}", drop: "mysqladmin -u '%{user}' -f drop %{dbname}" }
  }.slice(*dbms).each do |dbm, info|
    namespace dbm do
      user = ENV.fetch info[:uservar], info[:defaultuser]
      task :create_databases do
        DATABASES.each do |dbname|
          system(info[:create] % {user: user, dbname: dbname})
        end
      end
      task :drop_databases do
        DATABASES.each do |dbname|
          system(info[:drop] % {user: user, dbname: dbname})
        end
      end
    end
  end

  desc 'Create test databases'
  task :create_databases do
    invoke_multiple(dbms, "create_databases")
  end

  desc 'Drop test databases'
  task :drop_databases do
    invoke_multiple(dbms, "drop_databases")
  end

  def invoke_multiple(namespaces, task)
    failed = namespaces.reject { |adapter|
      begin
        Rake::Task["#{adapter}:#{task}"].invoke
        true
      rescue => e
        warn "\n#{e}\n"
        false
      end
    }
    fail "Failure in: #{failed.join(', ')}" if failed.any?
  end
end

Version data entries

44 entries across 44 versions & 1 rubygems

Version Path
schema_dev-4.0.0 lib/schema_dev/tasks/dbms.rb
schema_dev-3.13.1 lib/schema_dev/tasks/dbms.rb
schema_dev-3.13.0 lib/schema_dev/tasks/dbms.rb
schema_dev-3.12.1 lib/schema_dev/tasks/dbms.rb
schema_dev-3.12.0 lib/schema_dev/tasks/dbms.rb
schema_dev-3.11.2 lib/schema_dev/tasks/dbms.rb
schema_dev-3.11.1 lib/schema_dev/tasks/dbms.rb
schema_dev-3.11.0 lib/schema_dev/tasks/dbms.rb
schema_dev-3.10.1 lib/schema_dev/tasks/dbms.rb
schema_dev-3.10.0 lib/schema_dev/tasks/dbms.rb
schema_dev-3.9.0 lib/schema_dev/tasks/dbms.rb
schema_dev-3.8.1 lib/schema_dev/tasks/dbms.rb
schema_dev-3.8.0 lib/schema_dev/tasks/dbms.rb
schema_dev-3.7.1 lib/schema_dev/tasks/dbms.rb
schema_dev-3.7.0 lib/schema_dev/tasks/dbms.rb
schema_dev-3.6.2 lib/schema_dev/tasks/dbms.rb
schema_dev-3.6.1 lib/schema_dev/tasks/dbms.rb
schema_dev-3.6.0 lib/schema_dev/tasks/dbms.rb
schema_dev-3.5.1 lib/schema_dev/tasks/dbms.rb
schema_dev-3.5.0 lib/schema_dev/tasks/dbms.rb