Sha256: e255811997e18a6b893285aa14b2452870c662798f3b7439fa1ceb070da6f84b

Contents?: true

Size: 1.17 KB

Versions: 5

Compression:

Stored size: 1.17 KB

Contents

module MigrationBundler
  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 = MigrationBundler::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

5 entries across 5 versions & 1 rubygems

Version Path
migration_bundler-1.4.0 lib/migration_bundler/migrations.rb
migration_bundler-1.3.3 lib/migration_bundler/migrations.rb
migration_bundler-1.3.2 lib/migration_bundler/migrations.rb
migration_bundler-1.3.1 lib/migration_bundler/migrations.rb
migration_bundler-1.3.0 lib/migration_bundler/migrations.rb