Sha256: a114f68f88657660e30de7443a0e85244d457dd1ba242617f143905b0fd4f094

Contents?: true

Size: 1.47 KB

Versions: 2

Compression:

Stored size: 1.47 KB

Contents

require 'active_record'

module DataMigrate

  class DataMigrator < ActiveRecord::Migrator

    def record_version_state_after_migrating(version)
      if down?
        migrated.delete(version)
        DataMigrate::DataSchemaMigration.where(:version => version.to_s).delete_all
      else
        migrated << version
        DataMigrate::DataSchemaMigration.create!(:version => version.to_s)
      end
    end

    class << self
      def get_all_versions(connection = ActiveRecord::Base.connection)
        if connection.table_exists?(schema_migrations_table_name)
          # Certain versions of the gem wrote data migration versions into
          # schema_migrations table. After the fix, it was corrected to write into
          # data_migrations. However, not to break anything we are going to
          # get versions from both tables.
          #
          # This may cause some problems:
          # Eg. rake data:versions will show version from the schema_migrations table
          # which may be a version of actual schema migration and not data migration
          DataMigrate::DataSchemaMigration.all.map { |x| x.version.to_i }.sort +
            ActiveRecord::SchemaMigration.all.map { |x| x.version.to_i }.sort
        else
          []
        end
      end

      def schema_migrations_table_name
        ActiveRecord::Base.table_name_prefix + 'data_migrations' + ActiveRecord::Base.table_name_suffix
      end

      def migrations_path
        'db/data'
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
data_migrate-2.0.1 lib/data_migrate/data_migrator.rb
data_migrate-2.0.0 lib/data_migrate/data_migrator.rb