Class: ActiveRecord::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/active_record/connection_adapters/sqlanywhere_jdbc_in4systems_adapter.rb

Constant Summary collapse

DEFAULT_CONFIG =
{ :username => 'dba', :password => 'sql' }

Class Method Summary collapse

Class Method Details

.sqlanywhere_jdbc_in4systems_connection(config) ⇒ Object

Main connection function to SQL Anywhere Connection Adapter takes four parameters:

  • :database (required, no default). Corresponds to “DatabaseName=” in connection string

  • :server (optional, defaults to :databse). Corresponds to “ServerName=” in connection string

  • :username (optional, default to ‘dba’)

  • :password (optional, deafult to ‘sql’)

  • :encoding (optional, defaults to charset of OS)

  • :commlinks (optional). Corresponds to “CommLinks=” in connection string

  • :connection_name (optional). Corresponds to “ConnectionName=” in connection string



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/active_record/connection_adapters/sqlanywhere_jdbc_in4systems_adapter.rb', line 45

def self.sqlanywhere_jdbc_in4systems_connection(config)

  if config[:connection_string]
    connection_string = config[:connection_string]
  else
    config = DEFAULT_CONFIG.merge(config)

    raise ArgumentError, "No database name was given. Please add a :database option." unless config.has_key?(:database)

    connection_string = "ServerName=#{(config[:server] || config[:database])};DatabaseName=#{config[:database]};UserID=#{config[:username]};Password=#{config[:password]};"
    connection_string += "CommLinks=#{config[:commlinks]};" unless config[:commlinks].nil?
    connection_string += "ConnectionName=#{config[:connection_name]};" unless config[:connection_name].nil?
    connection_string += "CharSet=#{config[:encoding]};" unless config[:encoding].nil?
    connection_string += "Idle=0" # Prevent the server from disconnecting us if we're idle for >240mins (by default)
  end

  url = 'jdbc:sqlanywhere:' + connection_string

  if ENV['SQLANY16']
    $CLASSPATH << 'sajdbc4.jar'
    $CLASSPATH << Pathname.new(ENV['SQLANY16']).join('java').join('sajdbc4.jar').to_s
    driver = 'sybase.jdbc4.sqlanywhere.IDriver'
  elsif ENV['SQLANY12']
    $CLASSPATH << 'sajdbc4.jar'
    $CLASSPATH << Pathname.new(ENV['SQLANY12']).join('java').join('sajdbc4.jar').to_s
    driver = 'sybase.jdbc4.sqlanywhere.IDriver'
  elsif ENV['SQLANY11']
    $CLASSPATH << 'sajdbc.jar'
    $CLASSPATH << Pathname.new(ENV['SQLANY11']).join('java').join('sajdbc.jar').to_s
    driver = 'sybase.jdbc.sqlanywhere.IDriver'
  else
    raise "Cannot find SqlAnywhere installation directory"
  end

  conn = ActiveRecord::Base.jdbc_connection({adapter: 'jdbc', driver: driver, url: url})

  ConnectionAdapters::SQLAnywhereJdbcIn4systemsAdapter.new( conn, logger, connection_string)
end