dbi-dbrc 1.1.2-x86-mswin32-60 → 1.1.3-x86-mswin32-60

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.
Files changed (5) hide show
  1. data/CHANGES +7 -0
  2. data/README +10 -8
  3. data/lib/dbi/dbrc.rb +73 -21
  4. data/test/tc_dbrc.rb +16 -1
  5. metadata +2 -2
data/CHANGES CHANGED
@@ -1,3 +1,10 @@
1
+ == 1.1.3 - 21-Jul-2008
2
+ * More RUBY_PLATFORM changes that I missed in the last release.
3
+ * Added inline RDOC for the accessors and updated the documentation
4
+ for the constructor.
5
+ * Added the DBI::DBRC#dbrc_dir and DBI::DBRC#dbrc_file methods.
6
+ * More tests.
7
+
1
8
  == 1.1.2 - 18-Jul-2008
2
9
  * Changed platform checking from RUBY_PLATFORM to Config::CONFIG['host_os']
3
10
  so that other implementations won't choke.
data/README CHANGED
@@ -1,6 +1,8 @@
1
1
  == Description
2
2
  This is a supplement to the dbi module, allowing you to avoid hard-coding
3
- passwords in your programs that make database connections.
3
+ passwords in your programs that make database connections. It can also
4
+ be used as a general password storage mechanism for other types of
5
+ connections, e.g. ssh, ftp, etc.
4
6
 
5
7
  == Requirements
6
8
  * Ruby 1.8.2 or later
@@ -26,8 +28,6 @@
26
28
  puts dbrc.interval
27
29
  puts dbrc.dsn
28
30
 
29
- dbh = DBI.connect(dbrc.dsn, dbrc.user, dbrc.password)
30
-
31
31
  == Installation
32
32
  rake test (optional)
33
33
  rake install (non-gem) or rake install_gem (gem)
@@ -81,7 +81,7 @@
81
81
 
82
82
  == Constants
83
83
  VERSION
84
- The current version of this packages, returned as a String.
84
+ The current version of this library, returned as a String.
85
85
 
86
86
  == Class Methods
87
87
  DBRC.new(db, user=nil, dir=nil)
@@ -190,13 +190,15 @@ DBRC#dsn=(dsn)
190
190
  n = db.max_reconn
191
191
 
192
192
  begin
193
- timeout(db.time_out){
193
+ Timeout.timeout(db.timeout){
194
194
  DBI.connect(db.dsn, db.user, db.passwd)
195
195
  }
196
196
  rescue DBI::Error
197
197
  n -= 1
198
- sleep db.interval if n > 0
199
- retry if n > 0
198
+ if n > 0
199
+ sleep db.interval
200
+ retry
201
+ end
200
202
  raise
201
203
  rescue TimeoutError
202
204
  # handle timeout error
@@ -232,7 +234,7 @@ DBRC#dsn=(dsn)
232
234
 
233
235
  == Adding your own configuration
234
236
  If you want to add your own type of configuration file, you can still use
235
- the dbi-dbrc package. All you need to do is:
237
+ the dbi-dbrc library. All you need to do is:
236
238
 
237
239
  * subclass DBRC
238
240
  * redefine the +parse_dbrc_config_file+ method (a private method).
@@ -6,7 +6,6 @@ if Config::CONFIG['host_os'].match('mswin')
6
6
  end
7
7
 
8
8
  require 'sys/admin'
9
- include Sys
10
9
 
11
10
  # The DBI module serves as a namespace only.
12
11
  module DBI
@@ -18,14 +17,45 @@ module DBI
18
17
  # the error that is raised.
19
18
  class Error < StandardError; end
20
19
 
21
- VERSION = '1.1.2'
22
- attr_accessor :database, :user, :password, :driver, :dsn
23
- attr_accessor :maximum_reconnects, :timeout, :interval, :dbrc_dir
20
+ # The version of this library
21
+ VERSION = '1.1.3'
24
22
 
25
- # Returns a new DBRC object. The contents of the object depend on the
26
- # arguments passed to the constructor. If only a database name is
23
+ # The database or host to be connected to.
24
+ attr_accessor :database
25
+
26
+ # The user name used for the database or host connection.
27
+ attr_accessor :user
28
+
29
+ # The password associated with the database or host.
30
+ attr_accessor :password
31
+
32
+ # The driver associated with the database. This is used to internally to
33
+ # construct the DSN.
34
+ attr_accessor :driver
35
+
36
+ # Data source name, e.g. "dbi:OCI8:your_database".
37
+ attr_accessor :dsn
38
+
39
+ # The maximum number of reconnects a program should make before
40
+ # giving up.
41
+ attr_accessor :maximum_reconnects
42
+
43
+ # The timeout, in seconds, for each connection attempt.
44
+ attr_accessor :timeout
45
+
46
+ # The interval, in seconds, between each connection attempt.
47
+ attr_accessor :interval
48
+
49
+ # The directory where the .dbrc file is stored.
50
+ attr_accessor :dbrc_dir
51
+
52
+ # The full path to the .dbrc file.
53
+ attr_accessor :dbrc_file
54
+
55
+ # Returns a new DBI::DBRC object. The contents of the object depend on
56
+ # the arguments passed to the constructor. If only a database name is
27
57
  # passed, then the first entry found in the .dbrc file that matches that
28
- # database is parsed. If a user name is also included, then the first
58
+ # database is parsed. If a user name is also included, then the first
29
59
  # entry that matches both the database and user name is parsed.
30
60
  #
31
61
  # If a directory is passed as the third argument, then DBRC will look
@@ -35,11 +65,28 @@ module DBI
35
65
  # If an entry cannot be found for the database, or database plus user
36
66
  # combination, then a Error is raised. If the .dbrc file cannot
37
67
  # be found, or is setup improperly with regards to permissions or
38
- # properties, a Error is raised.
68
+ # properties, a DBI::DBRC::Error is raised.
69
+ #
70
+ # See the README for the rules regarding .dbrc files and permissions.
71
+ #
72
+ # Note that this library can also be used as a general password
73
+ # storage mechanism. In that case simply treat the 'database' as the
74
+ # host name, and ignore the DBI::DBRC#dsn and DBI::DBRC#driver methods.
75
+ #
76
+ # Examples:
77
+ #
78
+ # # Find the first match for 'some_database'
79
+ # DBI::DBRC.new('some_database')
80
+ #
81
+ # # Find the first match for 'foo_user@some_database'
82
+ # DBI::DBRC.new('some_database', 'foo_user')
83
+ #
84
+ # # Find the first match for 'foo_user@some_database' under /usr/local
85
+ # DBI::DBRC.new('some_database', 'foo_usr', '/usr/local')
39
86
  #
40
87
  def initialize(database, user=nil, dbrc_dir=nil)
41
88
  if dbrc_dir.nil?
42
- if RUBY_PLATFORM.match('mswin')
89
+ if Config::CONFIG['host_os'].match('mswin')
43
90
  home = ENV['USERPROFILE'] || ENV['HOME']
44
91
  file = nil
45
92
 
@@ -51,12 +98,16 @@ module DBI
51
98
 
52
99
  @dbrc_file = file
53
100
  else
54
- @dbrc_file = File.join(Admin.get_user(Process.uid).dir, '.dbrc')
101
+ @dbrc_file = File.join(
102
+ Sys::Admin.get_user(Process.uid).dir,
103
+ '.dbrc'
104
+ )
55
105
  end
56
106
  else
57
107
  @dbrc_file = File.join(dbrc_dir, '.dbrc')
58
108
  end
59
109
 
110
+ @dbrc_dir = dbrc_dir
60
111
  @database = database
61
112
  @user = user
62
113
  encrypted = false # Win32 only
@@ -69,7 +120,7 @@ module DBI
69
120
  check_file()
70
121
 
71
122
  # If on Win32 and the file is encrypted, decrypt it.
72
- if RUBY_PLATFORM.match("mswin") && File.encrypted?(@dbrc_file)
123
+ if Config::CONFIG['host_os'].match("mswin") && File.encrypted?(@dbrc_file)
73
124
  encrypted = true
74
125
  File.decrypt(@dbrc_file)
75
126
  end
@@ -80,7 +131,7 @@ module DBI
80
131
  create_dsn_string()
81
132
 
82
133
  # If on Win32 and the file was encrypted, re-encrypt it
83
- if RUBY_PLATFORM.match("mswin") && encrypted
134
+ if Config::CONFIG['host_os'].match("mswin") && encrypted
84
135
  File.encrypt(@dbrc_file)
85
136
  end
86
137
  end
@@ -116,7 +167,7 @@ module DBI
116
167
 
117
168
  # Permissions must be set to 600 or better on Unix systems.
118
169
  # Must be hidden on Win32 systems.
119
- if RUBY_PLATFORM.match("mswin")
170
+ if Config::CONFIG['host_os'].match("mswin")
120
171
  unless File.hidden?(file)
121
172
  raise Error, "The .dbrc file must be hidden"
122
173
  end
@@ -165,14 +216,15 @@ module DBI
165
216
  raise Error, err
166
217
  end
167
218
 
168
- alias_method(:db,:database)
169
- alias_method(:db=,:database=)
170
- alias_method(:passwd,:password)
171
- alias_method(:passwd=,:password=)
172
- alias_method(:max_reconn,:maximum_reconnects)
173
- alias_method(:max_reconn=,:maximum_reconnects=)
174
- alias_method(:time_out,:timeout)
175
- alias_method(:time_out=,:timeout=)
219
+ alias_method(:db, :database)
220
+ alias_method(:db=, :database=)
221
+ alias_method(:passwd, :password)
222
+ alias_method(:passwd=, :password=)
223
+ alias_method(:max_reconn, :maximum_reconnects)
224
+ alias_method(:max_reconn=, :maximum_reconnects=)
225
+ alias_method(:time_out, :timeout)
226
+ alias_method(:time_out=, :timeout=)
227
+ alias_method(:host, :database)
176
228
  end
177
229
 
178
230
  # A subclass of DBRC designed to handle .dbrc files in XML format. The
@@ -31,7 +31,7 @@ class TC_DBRC < Test::Unit::TestCase
31
31
  end
32
32
 
33
33
  def test_version
34
- assert_equal("1.1.2", DBRC::VERSION)
34
+ assert_equal("1.1.3", DBRC::VERSION)
35
35
  end
36
36
 
37
37
  def test_bad_dbrc_properties
@@ -66,6 +66,21 @@ class TC_DBRC < Test::Unit::TestCase
66
66
  assert_kind_of(String, @dbrc.db)
67
67
  end
68
68
 
69
+ def test_host_alias
70
+ assert_respond_to(@dbrc, :host)
71
+ assert_equal(true, @dbrc.method(:host) == @dbrc.method(:database))
72
+ end
73
+
74
+ def test_dbrc_dir
75
+ assert_respond_to(@dbrc, :dbrc_dir)
76
+ assert_equal(@dir, @dbrc.dbrc_dir)
77
+ end
78
+
79
+ def test_dbrc_file
80
+ assert_respond_to(@dbrc, :dbrc_file)
81
+ assert_equal('.dbrc', File.basename(@dbrc.dbrc_file))
82
+ end
83
+
69
84
  def test_dsn
70
85
  assert_respond_to(@dbrc, :dsn)
71
86
  assert_respond_to(@dbrc, :dsn=)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dbi-dbrc
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.3
5
5
  platform: x86-mswin32-60
6
6
  authors:
7
7
  - Daniel Berger
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-07-18 00:00:00 -06:00
12
+ date: 2008-07-21 00:00:00 -06:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency