Module: FreshConnection::Extend::ArResolver

Defined in:
lib/fresh_connection/extend/ar_resolver.rb

Instance Method Summary collapse

Instance Method Details

#__extend_adapter_by_fc(klass, extend_adapter) ⇒ Object



23
24
25
26
27
# File 'lib/fresh_connection/extend/ar_resolver.rb', line 23

def __extend_adapter_by_fc(klass, extend_adapter)
  return if klass.include?(extend_adapter)
  klass.prepend BaseAdapter
  klass.prepend extend_adapter
end

#spec(*args) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/fresh_connection/extend/ar_resolver.rb', line 6

def spec(*args)
  specification = super

  case specification.config[:adapter].to_s
  when "mysql", "mysql2"
    require 'fresh_connection/extend/adapters/m2_adapter'
    __extend_adapter_by_fc(::ActiveRecord::ConnectionAdapters::Mysql2Adapter, M2Adapter)
  when "postgresql"
    require 'fresh_connection/extend/adapters/pg_adapter'
    __extend_adapter_by_fc(::ActiveRecord::ConnectionAdapters::PostgreSQLAdapter, PgAdapter)
  else
    raise NotImplementedError, "This adapter('#{specification.config[:adapter]}') is not supported. If you specified the mysql or postgres adapter, it's probably a bug in FreshConnection. Please teach me (https://github.com/tsukasaoishi/fresh_connection/issues/new)"
  end

  specification
end