module ActiveRecord::Annotate::Dumper

Public Class Methods

dump(table_name, connection = ActiveRecord::Base.connection, config = ActiveRecord::Base) click to toggle source
# File lib/active_record/annotate/dumper.rb, line 5
def dump(table_name, connection = ActiveRecord::Base.connection, config = ActiveRecord::Base)
  string_io = StringIO.new
  
  if connection.table_exists?(table_name)
    dumper(connection, config).send(:table, table_name, string_io)
  else
    string_io.write("  # can't find table `#{table_name}`")
  end
  
  process_annotation(string_io)
end

Private Class Methods

dumper(connection, config) click to toggle source
# File lib/active_record/annotate/dumper.rb, line 18
def dumper(connection, config)
  if connection.respond_to?(:create_schema_dumper)
    connection.create_schema_dumper(ActiveRecord::SchemaDumper.send(:generate_options, config))
  else
    ActiveRecord::SchemaDumper.send(:new, connection)
  end
end
process_annotation(string_io) click to toggle source
# File lib/active_record/annotate/dumper.rb, line 26
def process_annotation(string_io)
  string_io.string.split(?\n).map do |line|
    line.tap do |line|
      # commenting out the line
      line[0] = '#'
      # replacing strings with symbols
      line.gsub!(/"(\w+)"/, ':\1')
    end
  end
end