class Db2Query::DbClient

Attributes

dsn[R]

Public Class Methods

new(config) click to toggle source
# File lib/db2_query/db_client.rb, line 11
def initialize(config)
  @dsn = config[:dsn]
  @idle_time_limit = config[:idle] || 5
  @client = new_client
  @last_transaction = Time.now
end

Public Instance Methods

active?() click to toggle source
# File lib/db2_query/db_client.rb, line 22
def active?
  @client.connected?
end
client() click to toggle source
# File lib/db2_query/db_client.rb, line 50
def client
  reconnect! unless connected_and_persist?
  @last_transaction = Time.now
  @client
end
connected_and_persist?() click to toggle source
# File lib/db2_query/db_client.rb, line 26
def connected_and_persist?
  active? && !expire?
end
disconnect!() click to toggle source
# File lib/db2_query/db_client.rb, line 30
def disconnect!
  @client.drop_all
  @client.disconnect if active?
  @client = nil
end
expire?() click to toggle source
# File lib/db2_query/db_client.rb, line 18
def expire?
  Time.now - @last_transaction > 60 * @idle_time_limit
end
new_client() click to toggle source
# File lib/db2_query/db_client.rb, line 36
def new_client
  ODBC.connect(dsn).tap do |odbc_conn|
    odbc_conn.use_time = true
    odbc_conn.use_utc = is_utc?
  end
rescue ::ODBC::Error => e
  raise Db2Query::ConnectionError.new(e.message)
end
reconnect!() click to toggle source
# File lib/db2_query/db_client.rb, line 45
def reconnect!
  disconnect!
  @client = new_client
end