Class: NativeDbTypesOverride::AdapterOverrider

Inherits:
Object
  • Object
show all
Defined in:
lib/activerecord-native_db_types_override/adapter_overrider.rb

Class Method Summary collapse

Class Method Details

.convert_symbol_to_class(adapter_class_or_sym) ⇒ Object



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

def self.convert_symbol_to_class(adapter_class_or_sym)
  case adapter_class_or_sym
  when :postgres
    require 'active_record/connection_adapters/postgresql_adapter'
    '::ActiveRecord::ConnectionAdapters::PostgreSQLAdapter'.constantize
  when :mysql
    require 'active_record/connection_adapters/abstract_mysql_adapter'
    '::ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter'.constantize
  when :sqlite
    require 'active_record/connection_adapters/sqlite3_adapter'
    '::ActiveRecord::ConnectionAdapters::SQLite3Adapter'.constantize
  when :oracle
    require 'active_record/connection_adapters/oracle_enhanced_adapter'
    '::ActiveRecord::ConnectionAdapters::OracleEnhancedAdapter'.constantize
  when :sqlserver
    require 'active_record/connection_adapters/sqlserver_adapter'
    '::ActiveRecord::ConnectionAdapters::SQLServer'.constantize
  else
    adapter_class_or_sym
  end
end

.override_native_database_types(adapter_class, hash) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/activerecord-native_db_types_override/adapter_overrider.rb', line 4

def self.override_native_database_types(adapter_class, hash)
  puts "ActiveRecord - Native Database Types Override #{NativeDbTypesOverride::VERSION}" if NativeDbTypesOverride.debug?
  new_types = {}
  begin
    new_types = adapter_class.const_get('NATIVE_DATABASE_TYPES')
  rescue
    puts "No NATIVE_DATABASE_TYPES constant on #{adapter_class} so expecting the whole types hash to be specified via NativeDbTypesOverride.configure()" if NativeDbTypesOverride.debug?
  end
  new_types = new_types.merge(hash)
  puts "Defining #{adapter_class}.native_database_types as #{new_types.inspect}" if NativeDbTypesOverride.debug?

  adapter_class.class_eval "def native_database_types; #{new_types.inspect}; end"
end