class PactBroker::DB::MigrationTask

Attributes

database_connection[RW]
options[RW]

Public Class Methods

new(&block) click to toggle source
# File lib/pact_broker/tasks/migration_task.rb, line 21
def initialize &block
  @options = {}
  rake_task(&block)
end

Public Instance Methods

rake_task(&block) click to toggle source
# File lib/pact_broker/tasks/migration_task.rb, line 26
def rake_task &block
  namespace :pact_broker do
    namespace :db do
      desc "Run sequel migrations for pact broker database"
      task :migrate, [:target] do | _t, args |
        require "pact_broker/db/migrate"
        require "pact_broker/db/version"

        instance_eval(&block)

        if args[:target]
          options[:target] = args[:target].to_i
        end

        if (logger = database_connection.loggers.first)
          current_version = PactBroker::DB::Version.call(database_connection)
          if options[:target]
            logger.info "Migrating from schema version #{current_version} to #{options[:target]}"
          else
            logger.info "Migrating from schema version #{current_version} to latest"
          end
        end

        PactBroker::DB::Migrate.call(database_connection, options)

        if logger
          current_version = PactBroker::DB::Version.call(database_connection)
          logger.info "Current schema version is now #{current_version}"
        end
      end
    end
  end
end