class DataMigrate::DataMigrator

Public Class Methods

create_data_schema_table() click to toggle source
# File lib/data_migrate/data_migrator.rb, line 18
def create_data_schema_table
  DataMigrate::RailsHelper.data_schema_migration.create_table
end
current_version() click to toggle source
# File lib/data_migrate/data_migrator.rb, line 22
def current_version
  DataMigrate::MigrationContext.new(migrations_paths).current_version
end
full_migrations_path() click to toggle source

Provides the full migrations_path filepath @return (String)

# File lib/data_migrate/data_migrator.rb, line 41
def full_migrations_path
  File.join(Rails.root, *migrations_paths.split(File::SEPARATOR))
end
match(filename) click to toggle source

Compares the given filename with what we expect data migration filenames to be, eg the “20091231235959_some_name.rb” pattern @param (String) filename @return (MatchData)

# File lib/data_migrate/data_migrator.rb, line 31
def match(filename)
  /(\d{14})_(.+)\.rb$/.match(filename)
end
migrations(_migrations_paths) click to toggle source

TODO: this was added to be backward compatible, need to re-evaluate

# File lib/data_migrate/data_migrator.rb, line 50
def migrations(_migrations_paths)
  #DataMigrate::MigrationContext.new(migrations_paths).migrations
  DataMigrate::MigrationContext.new(_migrations_paths).migrations
end
migrations_paths() click to toggle source
# File lib/data_migrate/data_migrator.rb, line 14
def migrations_paths
  Array.wrap(DataMigrate.config.data_migrations_path)
end
migrations_status() click to toggle source
# File lib/data_migrate/data_migrator.rb, line 45
def migrations_status
  DataMigrate::MigrationContext.new(migrations_paths).migrations_status
end
needs_migration?() click to toggle source
# File lib/data_migrate/data_migrator.rb, line 35
def needs_migration?
  DataMigrate::DatabaseTasks.pending_migrations.count.positive?
end
rollback(migrations_path, steps) click to toggle source
# File lib/data_migrate/data_migrator.rb, line 64
def rollback(migrations_path, steps)
  DataMigrate::MigrationContext.new(migrations_path).rollback(steps)
end
run(direction, migration_paths, version) click to toggle source

TODO: this was added to be backward compatible, need to re-evaluate

# File lib/data_migrate/data_migrator.rb, line 56
def run(direction, migration_paths, version)
  # Ensure all Active Record model cache is reset for each data migration
  # As recommended in: https://github.com/rails/rails/blob/da21c2e9812e5eb0698fba4a9aa38632fc004432/activerecord/lib/active_record/migration.rb#L467-L470
  ActiveRecord::Base.descendants.each(&:reset_column_information)

  DataMigrate::MigrationContext.new(migration_paths).run(direction, version)
end

Public Instance Methods

load_migrated() click to toggle source
# File lib/data_migrate/data_migrator.rb, line 8
def load_migrated
  @migrated_versions =
    DataMigrate::RailsHelper.data_schema_migration.normalized_versions.map(&:to_i).sort
end

Private Instance Methods

record_version_state_after_migrating(version) click to toggle source
# File lib/data_migrate/data_migrator.rb, line 71
def record_version_state_after_migrating(version)
  if down?
    migrated.delete(version)
    DataMigrate::RailsHelper.data_schema_delete_version(version.to_s)
  else
    migrated << version
    DataMigrate::RailsHelper.data_schema_migration.create_version(version.to_s)
  end
end