class DataMigrate::StatusService

Public Class Methods

dump(connection = ActiveRecord::Base.connection, stream = STDOUT) click to toggle source
# File lib/data_migrate/status_service.rb, line 4
def dump(connection = ActiveRecord::Base.connection, stream = STDOUT)
  new(connection).dump(stream)
  stream
end
new(connection) click to toggle source
# File lib/data_migrate/status_service.rb, line 10
def initialize(connection)
  @connection = connection
end

Public Instance Methods

dump(stream) click to toggle source
# File lib/data_migrate/status_service.rb, line 18
def dump(stream)
  unless @connection.table_exists?(table_name)
    stream.puts "Data migrations table does not exist yet."
    return
  end
  sql = "SELECT version FROM #{DataMigrate::DataMigrator.schema_migrations_table_name}"
  db_list = ActiveRecord::Base.connection.select_values(sql)
  output(stream, db_list)
end
root_folder() click to toggle source
# File lib/data_migrate/status_service.rb, line 14
def root_folder
  Rails.root
end

Private Instance Methods

db_list() click to toggle source
# File lib/data_migrate/status_service_five.rb, line 44
def db_list
  DataMigrate::DataMigrator.migrations_status
end
migration_files(db_list) click to toggle source
# File lib/data_migrate/status_service.rb, line 53
def migration_files(db_list)
  file_list = []
  Dir.foreach(File.join(root_folder, DataMigrate.config.data_migrations_path)) do |file|
    # only files matching "20091231235959_some_name.rb" pattern
    if match_data = DataMigrate::DataMigrator.match(file)
      status = db_list.delete(match_data[1]) ? "up" : "down"
      file_list << [status, match_data[1], match_data[2].humanize]
    end
  end
  file_list
end
migration_list(db_list) click to toggle source
# File lib/data_migrate/status_service.rb, line 45
def migration_list(db_list)
  list = []
  db_list.each do |version|
    list << ["up", version, "********** NO FILE *************"]
  end
  list
end
output(stream, db_list) click to toggle source
# File lib/data_migrate/status_service.rb, line 34
def output(stream, db_list)
  stream.puts "#{"Status".center(8)}  #{"Migration ID".ljust(14)}  Migration Name"
  stream.puts "-" * 50
  list =  migration_files(db_list) + migration_list(db_list)
  list.sort! {|line1, line2| line1[1] <=> line2[1]}
  list.each do |file|
    stream.puts "#{file[0].center(8)}  #{file[1].ljust(14)}  #{file[2]}"
  end
  stream.puts
end
table_name() click to toggle source
# File lib/data_migrate/status_service.rb, line 30
def table_name
  DataMigrate::DataMigrator.schema_migrations_table_name
end