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