class DataMigrate::DatabaseTasks

This class extends DatabaseTasks to add a schema_file method.

Public Class Methods

check_schema_file(filename) click to toggle source
# File lib/data_migrate/database_tasks.rb, line 30
def check_schema_file(filename)
  unless File.exist?(filename)
    message = +%{#{filename} doesn't exist yet. Run `rake data:migrate` to create it, then try again.}
    Kernel.abort message
  end
end
data_migrations_path() click to toggle source
# File lib/data_migrate/database_tasks.rb, line 57
def self.data_migrations_path
  DataMigrate.config.data_migrations_path
end
dump_filename(namespace, format = ActiveRecord::Base.schema_format) click to toggle source
# File lib/data_migrate/database_tasks.rb, line 16
def dump_filename(namespace, format = ActiveRecord::Base.schema_format)
  filename = if namespace == "primary"
    schema_file_type(format)
  else
    "#{namespace}_#{schema_file_type(format)}"
  end

  ENV["DATA_SCHEMA"] || File.join(schema_location, filename)
end
forward(step = 1) click to toggle source
# File lib/data_migrate/database_tasks.rb, line 43
def self.forward(step = 1)
  DataMigrate::DataMigrator.assure_data_schema_table
  migrations = pending_migrations.reverse.pop(step).reverse
  migrations.each do | pending_migration |
    if pending_migration[:kind] == :data
      ActiveRecord::Migration.write("== %s %s" % ["Data", "=" * 71])
      DataMigrate::DataMigrator.run(:up, data_migrations_path, pending_migration[:version])
    elsif pending_migration[:kind] == :schema
      ActiveRecord::Migration.write("== %s %s" % ["Schema", "=" * 69])
      DataMigrate::SchemaMigration.run(:up, schema_migrations_path, pending_migration[:version])
    end
  end
end
past_migrations(sort = nil) click to toggle source
# File lib/data_migrate/database_tasks.rb, line 88
def self.past_migrations(sort = nil)
  sort = sort.downcase if sort
  db_list_data =
    if DataMigrate::DataSchemaMigration.table_exists?
      DataMigrate::DataSchemaMigration.normalized_versions.sort
    else
      []
    end
  db_list_schema = ActiveRecord::SchemaMigration.normalized_versions.sort.sort
  migrations = db_list_data.map do |d|
    {
      version: d.to_i, kind: :data
    }
  end +
               db_list_schema.map do |d|
                 {
                   version: d.to_i, kind: :schema
                 }
               end

  sort == "asc" ? sort_migrations(migrations) : sort_migrations(migrations).reverse
end
pending_data_migrations() click to toggle source
# File lib/data_migrate/database_tasks.rb, line 69
def self.pending_data_migrations
  data_migrations = DataMigrate::DataMigrator.migrations(data_migrations_path)
  sort_migrations(DataMigrate::DataMigrator.new(:up, data_migrations ).
    pending_migrations.map {|m| { version: m.version, name: m.name, kind: :data }})
end
pending_migrations() click to toggle source
# File lib/data_migrate/database_tasks.rb, line 65
def self.pending_migrations
  sort_migrations(pending_schema_migrations, pending_data_migrations)
end
pending_schema_migrations() click to toggle source
# File lib/data_migrate/database_tasks.rb, line 75
def self.pending_schema_migrations
  ::DataMigrate::SchemaMigration.pending_schema_migrations
end
schema_file(_format = nil) click to toggle source

This overrides ActiveRecord::Tasks::DatabaseTasks

# File lib/data_migrate/database_tasks.rb, line 39
def self.schema_file(_format = nil)
  File.join(db_dir, "data_schema.rb")
end
schema_file_type(_format = nil) click to toggle source
# File lib/data_migrate/database_tasks.rb, line 12
def schema_file_type(_format = nil)
  "data_schema.rb"
end
schema_location() click to toggle source
# File lib/data_migrate/database_tasks.rb, line 26
def schema_location
  db_dir
end
schema_migrations_path() click to toggle source
# File lib/data_migrate/database_tasks.rb, line 61
def self.schema_migrations_path
  "db/migrate/"
end
sort_migrations(set1, set2 = nil) click to toggle source
# File lib/data_migrate/database_tasks.rb, line 79
def self.sort_migrations(set1, set2 = nil)
  migrations = set1 + (set2 || [])
  migrations.sort {|a, b|  sort_string(a) <=> sort_string(b)}
end
sort_string(migration) click to toggle source
# File lib/data_migrate/database_tasks.rb, line 84
def self.sort_string(migration)
  "#{migration[:version]}_#{migration[:kind] == :data ? 1 : 0}"
end