Sha256: 051af9b7303b67ce79ca4ee679e011221377bbadf7c492b8d7dd8fc3a58d414b
Contents?: true
Size: 1.62 KB
Versions: 2
Compression:
Stored size: 1.62 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.create_data_schema_table return if info[:version].blank? version = info[:version].to_i unless migrated.include?(version) execute "INSERT INTO #{sm_table} (version) VALUES ('#{version}')" end insert(version) end private def migrated @migrated ||= select_values("SELECT version FROM #{sm_table}").map(&:to_i) end def versions @versions ||= Set.new.tap do |versions| DataMigrate::DataMigrator.migrations_paths.each do |path| Dir.foreach(path) do |file| match_data = DataMigrate::DataMigrator.match(file) versions << match_data[1].to_i if match_data end end end end def insert(version) 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 def sm_table quote_table_name(table_name) end def table_name DataMigrate::RailsHelper.data_schema_migration.table_name end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
data_migrate-11.2.0 | lib/data_migrate/data_schema.rb |
data_migrate-11.1.0 | lib/data_migrate/data_schema.rb |