class RailsDataMigrations::Migrator

Constants

MIGRATOR_SALT

Public Class Methods

current_version() click to toggle source
# File lib/rails_data_migrations/migrator.rb, line 29
def current_version
  get_all_versions.max || 0
end
get_all_versions(connection = ActiveRecord::Base.connection) click to toggle source
# File lib/rails_data_migrations/migrator.rb, line 21
def get_all_versions(connection = ActiveRecord::Base.connection)
  if migrations_table_exists?(connection)
    LogEntry.all.map { |x| x.version.to_i }.sort
  else
    []
  end
end
list_migrations() click to toggle source
# File lib/rails_data_migrations/migrator.rb, line 49
def list_migrations
  if rails_6_0?
    ::ActiveRecord::MigrationContext.new(migrations_path, ::ActiveRecord::SchemaMigration).migrations
  elsif rails_5_2?
    ::ActiveRecord::MigrationContext.new(migrations_path).migrations
  else
    migrations(migrations_path)
  end
end
list_pending_migrations() click to toggle source
# File lib/rails_data_migrations/migrator.rb, line 59
def list_pending_migrations
  if rails_5_2?
    already_migrated = get_all_versions
    list_migrations.reject { |m| already_migrated.include?(m.version) }
  else
    open(migrations_path).pending_migrations
  end
end
migrations_path() click to toggle source
# File lib/rails_data_migrations/migrator.rb, line 37
def migrations_path
  'db/data_migrations'
end
migrations_table_exists?(connection = ActiveRecord::Base.connection) click to toggle source
# File lib/rails_data_migrations/migrator.rb, line 16
def migrations_table_exists?(connection = ActiveRecord::Base.connection)
  table_check_method = connection.respond_to?(:data_source_exists?) ? :data_source_exists? : :table_exists?
  connection.send(table_check_method, schema_migrations_table_name)
end
rails_5_2?() click to toggle source
# File lib/rails_data_migrations/migrator.rb, line 45
def rails_5_2?
  Rails::VERSION::MAJOR > 5 || (Rails::VERSION::MAJOR == 5 && Rails::VERSION::MINOR >= 2)
end
rails_6_0?() click to toggle source
# File lib/rails_data_migrations/migrator.rb, line 41
def rails_6_0?
  Rails::VERSION::MAJOR >= 6
end
run_migration(direction, migrations_path, version) click to toggle source
# File lib/rails_data_migrations/migrator.rb, line 68
def run_migration(direction, migrations_path, version)
  if rails_6_0?
    new(direction, list_migrations, ::ActiveRecord::SchemaMigration, version).run
  elsif rails_5_2?
    new(direction, list_migrations, version).run
  else
    run(direction, migrations_path, version)
  end
end
schema_migrations_table_name() click to toggle source
# File lib/rails_data_migrations/migrator.rb, line 33
def schema_migrations_table_name
  LogEntry.table_name
end

Public Instance Methods

record_version_state_after_migrating(version) click to toggle source
# File lib/rails_data_migrations/migrator.rb, line 5
def record_version_state_after_migrating(version)
  if down?
    migrated.delete(version)
    LogEntry.where(version: version.to_s).delete_all
  else
    migrated << version
    LogEntry.create!(version: version.to_s)
  end
end