Sha256: dc3f5335434d84111ac43cc72356c53f65ffc54b136650157080047b2b86d728

Contents?: true

Size: 824 Bytes

Versions: 3

Compression:

Stored size: 824 Bytes

Contents

module MinceMigrator
  module Migrations
    require_relative '../migration'
    require_relative 'runner_validator'
    require 'mince/config'

    class Runner
      attr_reader :name, :validator

      def initialize(options)
        if options[:migration]
          @migration = options[:migration]
          @name = migration.name
        elsif options[:name]
          @name = options[:name]
        end
        @validator = RunnerValidator.new(migration)
      end

      def can_run_migration?
        validator.call
      end

      def run_migration
        migration.run
        RanMigration.create(name: migration.name)
        true
      end

      def reasons_for_failure
        validator.errors.join(" ")
      end

      def migration
        @migration ||= Migration.find(name)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
mince_migrator-1.0.2 lib/mince_migrator/migrations/runner.rb
mince_migrator-1.0.1 lib/mince_migrator/migrations/runner.rb
mince_migrator-1.0.0 lib/mince_migrator/migrations/runner.rb