Sha256: b0074126780a3bb5d59e6b01ea990a9d9351578f9eebf0dc52f943597bce2bfa
Contents?: true
Size: 1.38 KB
Versions: 4
Compression:
Stored size: 1.38 KB
Contents
# frozen_string_literal: true module DataMigrate ## # Provides the definition method for data_schema.rb class Data < ActiveRecord::Schema # This method is based on the following two methods # ActiveRecord::Schema#define # ActiveRecord::ConnectionAdapters::SchemaStatements # #assume_migrated_upto_version def define(info) DataMigrate::DataMigrator.assure_data_schema_table return if info[:version].blank? version = info[:version].to_i table_name = DataMigrate::DataMigrator.schema_migrations_table_name sm_table = quote_table_name(table_name) migrated = select_values("SELECT version FROM #{sm_table}").map(&:to_i) versions = [] Dir.foreach(DataMigrate::DataMigrator.full_migrations_path) do |file| match_data = DataMigrate::DataMigrator.match(file) versions << match_data[1].to_i if match_data end unless migrated.include?(version) execute "INSERT INTO #{sm_table} (version) VALUES ('#{version}')" end inserted = Set.new (versions - migrated).each do |v| if inserted.include?(v) raise "Duplicate data migration #{v}. Please renumber your data " \ "migrations to resolve the conflict." elsif v < version execute "INSERT INTO #{sm_table} (version) VALUES ('#{v}')" inserted << v end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems