Sha256: 8c1e3997cd348a1b0a7846cecc6262b68633d65af4c865f0abef5190148d343c

Contents?: true

Size: 1.16 KB

Versions: 1

Compression:

Stored size: 1.16 KB

Contents

module MonkeyButler
  class Migrations
    attr_reader :path, :database

    def initialize(path, database)
      @path = path
      @database = database
      migration_paths = Dir.glob(File.join(path, "*#{database.class.migration_ext}"))
      @paths_by_version = MonkeyButler::Util.migrations_by_version(migration_paths)
    end

    def current_version
      database.migrations_table? ? database.current_version : nil
    end

    def all_versions
      @paths_by_version.keys
    end

    def latest_version
      all_versions.max
    end

    def applied_versions
      database.migrations_table? ? database.all_versions : []
    end

    def pending_versions
      (all_versions - applied_versions).sort
    end

    def pending(&block)
      pending_versions.inject({}) { |hash, v| hash[v] = self[v]; hash }.tap do |hash|
        hash.each(&block) if block_given?
      end
    end

    def all(&block)
      all_versions.inject({}) { |hash, v| hash[v] = self[v]; hash }.tap do |hash|
        hash.each(&block) if block_given?
      end
    end

    def up_to_date?
      pending_versions.empty?
    end

    def [](version)
      @paths_by_version[version]
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
monkey_butler-1.2.2 lib/monkey_butler/migrations.rb