Sha256: ea168bbd4bfe74e8c11d6883b8fadbbdf4f632020bcca5928be1bbf26fe4b0ab

Contents?: true

Size: 1.15 KB

Versions: 5

Compression:

Stored size: 1.15 KB

Contents

# frozen_string_literal: true

class Combustion::Database::Migrate
  def self.call
    new.call
  end

  def call
    if ActiveRecord::VERSION::STRING.to_f >= 5.2
      migration_context.migrate
    elsif ActiveRecord::VERSION::STRING.to_f >= 3.1
      migrator.migrate paths, nil
    else
      paths.each { |path| migrator.migrate path, nil }
    end
  end

  private

  def base_migration_paths
    if migrator.respond_to?(:migrations_paths)
      migrator.migrations_paths
    else
      Array("db/migrate/")
    end
  end

  def engine_migration_paths
    migration_paths = Rails.application.paths["db/migrate"].to_a

    if engine_paths_exist_in?(migration_paths)
      migration_paths
    else
      base_migration_paths + migration_paths
    end
  end

  def engine_path
    Rails.application.root.sub(::Combustion.path, "")
  end

  def engine_paths_exist_in?(paths)
    paths.include?(engine_path.join("db/migrate").to_s)
  end

  def migration_context
    ActiveRecord::MigrationContext.new paths
  end

  def migrator
    @migrator ||= ActiveRecord::Migrator
  end

  def paths
    (engine_migration_paths + [File.join(Rails.root, "db/migrate")]).uniq
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
combustion-1.1.0 lib/combustion/database/migrate.rb
combustion-1.0.0 lib/combustion/database/migrate.rb
combustion-0.9.1 lib/combustion/database/migrate.rb
combustion-0.9.0 lib/combustion/database/migrate.rb
combustion-0.8.0 lib/combustion/database/migrate.rb