jdbc-helper 0.3.0 → 0.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,19 @@
1
1
  # encoding: UTF-8
2
2
  # Junegunn Choi (junegunn.c@gmail.com)
3
3
 
4
+ module JDBCHelper
5
+ class Connector
6
+ private
7
+ def self.ensure_close conn
8
+ begin
9
+ yield conn
10
+ ensure
11
+ conn.close rescue nil
12
+ end
13
+ end
14
+ end#Connector
15
+ end#JDBCHelper
16
+
4
17
  require 'jdbc-helper/connector/oracle_connector'
5
18
  require 'jdbc-helper/connector/mysql_connector'
6
19
 
@@ -3,7 +3,7 @@
3
3
 
4
4
  module JDBCHelper
5
5
  # Shortcut connector for MySQL
6
- class MySQLConnector
6
+ class MySQLConnector < Connector
7
7
  include Constants
8
8
  include Constants::Connector
9
9
 
@@ -16,19 +16,21 @@ class MySQLConnector
16
16
  # @return [JDBCHelper::Connection]
17
17
  def self.connect(host, user, password, db,
18
18
  timeout = DEFAULT_LOGIN_TIMEOUT,
19
- extra_params = DEFAULT_PARAMETERS[:mysql])
19
+ extra_params = DEFAULT_PARAMETERS[:mysql], &block)
20
20
 
21
21
  if extra_params && extra_params.is_a?(Hash) == false
22
22
  raise ArgumentError.new('extra_params must be a hash')
23
23
  end
24
24
 
25
- Connection.new(
25
+ conn = Connection.new(
26
26
  (extra_params || {}).merge(
27
27
  :driver => JDBC_DRIVER[:mysql],
28
28
  :url => "jdbc:mysql://#{host}/#{db}",
29
29
  :user => user,
30
30
  :password => password,
31
31
  :timeout => timeout))
32
+
33
+ block_given? ? ensure_close(conn, &block) : conn
32
34
  end
33
35
  end#MySQLConnector
34
36
  end#JDBCHelper
@@ -3,7 +3,7 @@
3
3
 
4
4
  module JDBCHelper
5
5
  # Shortcut connector for Oracle
6
- module OracleConnector
6
+ class OracleConnector < Connector
7
7
  include Constants
8
8
  include Constants::Connector
9
9
 
@@ -13,13 +13,15 @@ module OracleConnector
13
13
  # @param [String] service_name
14
14
  # @param [Fixnum] timeout
15
15
  # @return [JDBCHelper::Connection]
16
- def self.connect(host, user, password, service_name, timeout = DEFAULT_LOGIN_TIMEOUT)
17
- Connection.new(
16
+ def self.connect(host, user, password, service_name, timeout = DEFAULT_LOGIN_TIMEOUT, &block)
17
+ conn = Connection.new(
18
18
  :driver => JDBC_DRIVER[:oracle],
19
19
  :url => "jdbc:oracle:thin:@#{host}/#{service_name}",
20
20
  :user => user,
21
21
  :password => password,
22
22
  :timeout => timeout)
23
+
24
+ block_given? ? ensure_close(conn, &block) : conn
23
25
  end
24
26
 
25
27
  # @param [String] host
@@ -28,13 +30,15 @@ module OracleConnector
28
30
  # @param [String] sid
29
31
  # @param [Fixnum] timeout
30
32
  # @return [JDBCHelper::Connection]
31
- def self.connect_by_sid(host, user, password, sid, timeout = DEFAULT_LOGIN_TIMEOUT)
32
- Connection.new(
33
+ def self.connect_by_sid(host, user, password, sid, timeout = DEFAULT_LOGIN_TIMEOUT, &block)
34
+ conn = Connection.new(
33
35
  :driver => JDBC_DRIVER[:oracle],
34
36
  :url => "jdbc:oracle:thin:@#{host}:#{sid}",
35
37
  :user => user,
36
38
  :password => password,
37
39
  :timeout => timeout)
40
+
41
+ block_given? ? ensure_close(conn, &block) : conn
38
42
  end
39
43
  end#OracleConnector
40
44
  end#JDBCHelper
data/test/database.yml CHANGED
@@ -8,6 +8,6 @@ mysql:
8
8
  oracle:
9
9
  driver: oracle.jdbc.driver.OracleDriver
10
10
  url: jdbc:oracle:thin:@localhost/test
11
- user: user
12
- password: password
11
+ user: testuser
12
+ password: testpassword
13
13
 
@@ -19,6 +19,15 @@ class TestConnectors < Test::Unit::TestCase
19
19
  assert conn.closed? == false
20
20
  conn.close
21
21
  assert conn.closed?
22
+
23
+ @conn = nil
24
+ ret = JDBCHelper::MySQLConnector.connect(host, conn_info['user'], conn_info['password'], db) do |conn|
25
+ assert conn.closed? == false
26
+ @conn = conn
27
+ 1
28
+ end
29
+ assert @conn.closed?
30
+ assert_equal 1, ret
22
31
  elsif conn_info['driver'] =~ /oracle/
23
32
  host = conn_info['url'].match(%r{@(.*?)/})[1]
24
33
  svc = conn_info['url'].match(%r{/([^/?]*?)(\?.*)?$})[1]
@@ -27,6 +36,15 @@ class TestConnectors < Test::Unit::TestCase
27
36
  assert conn.closed? == false
28
37
  conn.close
29
38
  assert conn.closed?
39
+
40
+ @conn = nil
41
+ ret = JDBCHelper::OracleConnector.connect(host, conn_info['user'], conn_info['password'], svc) do |conn|
42
+ assert conn.closed? == false
43
+ @conn = conn
44
+ 1
45
+ end
46
+ assert @conn.closed?
47
+ assert_equal 1, ret
30
48
  end
31
49
  end
32
50
  end
@@ -7,7 +7,7 @@ class TestPerformance < Test::Unit::TestCase
7
7
  def setup
8
8
  @table = 'tmp_jdbc_helper'
9
9
  @range = 'aaa'..'aaz'
10
- @count = 10000 # Increase this for performance measurement
10
+ @count = 100#00 # Increase this for performance measurement
11
11
  end
12
12
 
13
13
  def teardown
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: jdbc-helper
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.3.0
5
+ version: 0.3.2
6
6
  platform: ruby
7
7
  authors:
8
8
  - Junegunn Choi
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-05-21 00:00:00 +09:00
13
+ date: 2011-05-25 00:00:00 +09:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency