module SchemaComments

Constants

VERSION

Public Class Methods

setup() click to toggle source
# File lib/schema_comments.rb, line 22
def setup
  defined?(Rails) && Rails.env.production? ? setup_on_production : setup_on_development
end
setup_on_development() click to toggle source
# File lib/schema_comments.rb, line 26
def setup_on_development
  base_names = %w(Schema) +
    %w(ColumnDefinition TableDefinition).map{|name| "ConnectionAdapters::#{name}"}

  base_names.each do |base_name|
    ar_class = "ActiveRecord::#{base_name}".constantize
    sc_class = "SchemaComments::#{base_name}".constantize
    unless ar_class.ancestors.include?(sc_class)
      ar_class.__send__(:prepend, sc_class)
    end
  end

  unless ActiveRecord::ConnectionAdapters::AbstractAdapter.ancestors.include?(SchemaComments::ConnectionAdapters::Adapter)
    ActiveRecord::ConnectionAdapters::AbstractAdapter.module_eval do
      prepend SchemaComments::ConnectionAdapters::Adapter
    end
  end

  # %w(Mysql PostgreSQL SQLite3 SQLite Firebird DB2 Oracle Sybase Openbase Frontbase)
  %w(Mysql Mysql2 PostgreSQL SQLite3 SQLite).each do |adapter|
    begin
      require("active_record/connection_adapters/#{adapter.downcase}_adapter")
      adapter_class = ('ActiveRecord::ConnectionAdapters::' << "#{adapter}Adapter").constantize
      adapter_class.module_eval do
        prepend SchemaComments::ConnectionAdapters::ConcreteAdapter
      end
    rescue Exception => e
    end
  end
end
setup_on_production() click to toggle source
# File lib/schema_comments.rb, line 57
def setup_on_production
  ActiveRecord::Migration.__send__(:prepend, DummyMigration)
end