Module: ActiveRecord::Comments

Defined in:
lib/active_record/comments/version.rb,
lib/active_record/comments.rb,
lib/active_record/comments.rb

Defined Under Namespace

Modules: ConnectionAdapters

Constant Summary collapse

VERSION =
'0.0.4'

Class Method Summary collapse

Class Method Details

.setupObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/active_record/comments.rb', line 18

def self.setup
  _cls = ->(l) { l.join('::').constantize }

  ar_names = %w(ActiveRecord ConnectionAdapters AbstractAdapter)
  ar_class = _cls.(ar_names)
  arc_class = _cls.([self.name, *ar_names[1..-1]])
  ar_class.send :include, arc_class unless ar_class.ancestors.include? arc_class

  adapters = %w(PostgreSQL Mysql Mysql2)
  adapters << (::ActiveRecord::VERSION::MAJOR <= 3 ? 'SQLite' : 'SQLite3')
  adapters.each do |adapter|
    begin require "active_record/connection_adapters/#{adapter.downcase}_adapter"
    rescue LoadError => err; next; end

    to_inject = "#{adapter}Adapter"
    ar_class = _cls.([*ar_names[0..-2], to_inject])
    arc_class = _cls.([self.name, *ar_names[1..-2], to_inject])
    ar_class.module_eval do
      ar_class.send :include, arc_class unless ar_class.ancestors.include?(arc_class)
    end
  end
end