Class: ActiveRecord::Base

Inherits:
Object show all
Defined in:
lib/dataload/sqlserver_ext.rb

Class Method Summary collapse

Class Method Details

.orig_sqlserver_connectionObject


6
# File 'lib/dataload/sqlserver_ext.rb', line 6

alias_method :orig_sqlserver_connection, :sqlserver_connection

.sqlserver_connection(config) ⇒ Object

puts “redeffing sqlserver_connection”


8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/dataload/sqlserver_ext.rb', line 8

def sqlserver_connection(config) #:nodoc:
  #puts "in redeffed sqlserver connection"
  require_library_or_gem 'dbi' unless self.class.const_defined?(:DBI)
  
  config = config.symbolize_keys

  mode        = config[:mode] ? config[:mode].to_s.upcase : 'ADO'
  username    = config[:username] ? config[:username].to_s : 'sa'
  password    = config[:password] ? config[:password].to_s : ''
  autocommit  = config.key?(:autocommit) ? config[:autocommit] : true
  if mode == "ODBC"
    raise ArgumentError, "Missing DSN. Argument ':dsn' must be set in order for this adapter to work." unless config.has_key?(:dsn)
    dsn       = config[:dsn]
    driver_url = "DBI:ODBC:#{dsn}"
  else
    raise ArgumentError, "Missing Database. Argument ':database' must be set in order for this adapter to work." unless config.has_key?(:database)
    database  = config[:database]
    host      = config[:host] ? config[:host].to_s : 'localhost'
    if username =~ /PCI/
      driver_url = "DBI:ADO:Provider=SQLOLEDB;Data Source=#{host};Initial Catalog=#{database};Integrated Security=SSPI;"
    else
      driver_url = "DBI:ADO:Provider=SQLOLEDB;Data Source=#{host};Initial Catalog=#{database};User ID=#{username};Password=#{password};"
    end
  end
  #puts "DriverURL: #{driver_url}"
  conn      = DBI.connect(driver_url, username, password)
  conn["AutoCommit"] = autocommit
  ConnectionAdapters::SQLServerAdapter.new(conn, logger, [driver_url, username, password])
end