Sha256: 0bcca95916eba4a5e66591610b4b3696f8e2d05be7bbaff94d601e773943f6e4

Contents?: true

Size: 1.29 KB

Versions: 4

Compression:

Stored size: 1.29 KB

Contents

# frozen_string_literal: true

require 'schema_dev/config'
require 'schema_dev/rspec'

dbms = SchemaDev::Config.load.db

if dbms.any?
  (%w[postgresql mysql2] & dbms).each do |dbm|
    namespace dbm do
      task :create_database do
        require 'active_record'

        config = SchemaDev::Rspec.db_configuration(dbm)

        ActiveRecord::Tasks::DatabaseTasks.create(config)
      end
      task :drop_databases do
        require 'active_record'

        config = SchemaDev::Rspec.db_configuration(dbm)

        ActiveRecord::Tasks::DatabaseTasks.drop(config)
      end
    end
  end

  desc 'Create database for CI run'
  task :create_ci_database do
    require 'active_record'

    config = SchemaDev::Rspec.db_configuration

    ActiveRecord::Tasks::DatabaseTasks.create(config) unless config['adapter'] == 'sqlite3'
  end

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

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

  def invoke_multiple(namespaces, task)
    failed = namespaces.reject do |adapter|
      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

4 entries across 4 versions & 1 rubygems

Version Path
schema_dev-4.2.0 lib/schema_dev/tasks/dbms.rb
schema_dev-4.2.beta.5 lib/schema_dev/tasks/dbms.rb
schema_dev-4.1.1 lib/schema_dev/tasks/dbms.rb
schema_dev-4.1.0 lib/schema_dev/tasks/dbms.rb