# This class just loads the file containing the schema definition and hands off control to the schema. class DatabaseTransform::Transform

def initialize(args)
  @schema = args.schema_name
  @argv = args.extras
end

def run
  require_schema
  schema = @schema.camelize.constantize.new(*@argv)

  ActiveRecord::Base.logger = Logger.new('log/import.log')
  schema.transform!
end

private

def require_schema
  schema_file = @schema.underscore
  begin
    return require(File.join(Rails.root, 'db', 'transforms', schema_file))
  rescue LoadError
  end

  require (File.join(Rails.root, 'db', 'transforms', schema_file, schema_file))
end

end

namespace :db do

desc 'Transform old database schemas'
task :transform, [:schema_name] => :environment do |_, args|
  DatabaseTransform::Transform.new(args).run
end

end