dbi-dbrc 1.1.9 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,95 @@
1
+ ########################################################################
2
+ # dbi_dbrc_xml_spec.rb
3
+ #
4
+ # Test suite for the XML specific version of DBI::DBRC. This test case
5
+ # should be run via the 'rake test' task.
6
+ ########################################################################
7
+ require 'dbi/dbrc'
8
+ require 'rspec'
9
+ require 'pp' # Need this to avoid fakefs error
10
+ require 'fakefs/spec_helpers'
11
+
12
+ RSpec.describe DBI::DBRC::XML, :xml => true do
13
+ include FakeFS::SpecHelpers
14
+
15
+ let(:home) { File.join(Dir.pwd, 'home', 'someone') }
16
+ let(:dbrc) { File.join(home, '.dbrc') }
17
+
18
+ let(:db_foo){ 'foo' }
19
+ let(:user1) { 'user1' }
20
+
21
+ let(:xml){
22
+ %q{
23
+ <dbrc>
24
+ <database name="foo">
25
+ <user>user1</user>
26
+ <password>pwd1</password>
27
+ <driver>Oracle</driver>
28
+ <interval>60</interval>
29
+ <timeout>40</timeout>
30
+ <maximum_reconnects>3</maximum_reconnects>
31
+ </database>
32
+ <database name="foo">
33
+ <user>user2</user>
34
+ <password>pwd2</password>
35
+ <driver>OCI8</driver>
36
+ <interval>60</interval>
37
+ <timeout>60</timeout>
38
+ <maximum_reconnects>4</maximum_reconnects>
39
+ </database>
40
+ <database name="bar">
41
+ <user>user1</user>
42
+ <password>pwd3</password>
43
+ <driver>Oracle</driver>
44
+ <interval>30</interval>
45
+ <timeout>30</timeout>
46
+ <maximum_reconnects>2</maximum_reconnects>
47
+ </database>
48
+ <database name="baz">
49
+ <user>user3</user>
50
+ <password>pwd4</password>
51
+ </database>
52
+ </dbrc>
53
+ }.lstrip
54
+ }
55
+
56
+ before do
57
+ allow(Dir).to receive(:home).and_return(home)
58
+ FileUtils.mkdir_p(home)
59
+ File.open(dbrc, 'w'){ |fh| fh.write(xml) }
60
+ File.chmod(0600, dbrc)
61
+
62
+ # FakeFS doesn't implement this yet
63
+ allow_any_instance_of(FakeFS::File::Stat).to receive(:owned?).and_return(true)
64
+ end
65
+
66
+ context "instance methods" do
67
+ before do
68
+ @dbrc = described_class.new(db_foo, user1)
69
+ end
70
+
71
+ example "database method returns expected value" do
72
+ expect(@dbrc.database).to eq('foo')
73
+ end
74
+
75
+ example "password method returns expected value" do
76
+ expect(@dbrc.password).to eq('pwd1')
77
+ end
78
+
79
+ example "driver method returns expected value" do
80
+ expect(@dbrc.driver).to eq('Oracle')
81
+ end
82
+
83
+ example "interval method returns expected value" do
84
+ expect(@dbrc.interval).to eq(60)
85
+ end
86
+
87
+ example "timeout method returns expected value" do
88
+ expect(@dbrc.timeout).to eq(40)
89
+ end
90
+
91
+ example "maximum_reconnects method returns expected value" do
92
+ expect(@dbrc.maximum_reconnects).to eq(3)
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,89 @@
1
+ ########################################################################
2
+ # dbi_dbrc_yml_spec.rb
3
+ #
4
+ # Test suite for the YAML specific version of DBI::DBRC. This test case
5
+ # should be run via the 'rake test' task.
6
+ ########################################################################
7
+ require 'dbi/dbrc'
8
+ require 'rspec'
9
+ require 'pp' # Need this to avoid fakefs error
10
+ require 'fakefs/spec_helpers'
11
+
12
+ RSpec.describe DBI::DBRC::YML, :yml => true do
13
+ include FakeFS::SpecHelpers
14
+
15
+ let(:home) { File.join(Dir.pwd, 'home', 'someone') }
16
+ let(:dbrc) { File.join(home, '.dbrc') }
17
+
18
+ let(:db_foo){ 'foo' }
19
+ let(:user1) { 'user1' }
20
+
21
+ let(:yml){
22
+ %q{
23
+ - foo:
24
+ user: user1
25
+ password: pwd1
26
+ driver: Oracle
27
+ interval: 60
28
+ timeout: 40
29
+ maximum_reconnects: 3
30
+ - foo:
31
+ user: user2
32
+ password: pwd2
33
+ driver: OCI8
34
+ interval: 60
35
+ timeout: 60
36
+ maximum_reconnects: 4
37
+ - bar:
38
+ user: user1
39
+ password: pwd3
40
+ driver: Oracle
41
+ interval: 30
42
+ timeout: 30
43
+ maximum_reconnects: 2
44
+ - baz:
45
+ user: user3
46
+ password: pwd4
47
+ }
48
+ }
49
+
50
+ before do
51
+ allow(Dir).to receive(:home).and_return(home)
52
+ FileUtils.mkdir_p(home)
53
+ File.open(dbrc, 'w'){ |fh| fh.write(yml) }
54
+ File.chmod(0600, dbrc)
55
+
56
+ # FakeFS doesn't implement this yet
57
+ allow_any_instance_of(FakeFS::File::Stat).to receive(:owned?).and_return(true)
58
+ end
59
+
60
+ context "instance methods" do
61
+ before do
62
+ @dbrc = described_class.new(db_foo, user1)
63
+ end
64
+
65
+ example "database method returns expected value" do
66
+ expect(@dbrc.database).to eq('foo')
67
+ end
68
+
69
+ example "password method returns expected value" do
70
+ expect(@dbrc.password).to eq('pwd1')
71
+ end
72
+
73
+ example "driver method returns expected value" do
74
+ expect(@dbrc.driver).to eq('Oracle')
75
+ end
76
+
77
+ example "interval method returns expected value" do
78
+ expect(@dbrc.interval).to eq(60)
79
+ end
80
+
81
+ example "timeout method returns expected value" do
82
+ expect(@dbrc.timeout).to eq(40)
83
+ end
84
+
85
+ example "maximum_reconnects method returns expected value" do
86
+ expect(@dbrc.maximum_reconnects).to eq(3)
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,5 @@
1
+ require 'rspec'
2
+
3
+ RSpec.configure do |config|
4
+ config.filter_run_excluding(:windows) if RbConfig::CONFIG['host_os'] !~ /mswin|win32|dos|mingw|cygwin/i
5
+ end
metadata CHANGED
@@ -1,100 +1,149 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dbi-dbrc
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.9
5
- prerelease:
4
+ version: 1.5.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Daniel Berger
9
- autorequire:
8
+ autorequire:
10
9
  bindir: bin
11
- cert_chain: []
12
- date: 2013-01-10 00:00:00.000000000 Z
10
+ cert_chain:
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIEcDCCAtigAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MREwDwYDVQQDDAhkamJl
14
+ cmc5NjEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYDY29t
15
+ MB4XDTE4MDMxODE1MjIwN1oXDTI4MDMxNTE1MjIwN1owPzERMA8GA1UEAwwIZGpi
16
+ ZXJnOTYxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2Nv
17
+ bTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoCggGBALgfaroVM6CI06cxr0/h
18
+ A+j+pc8fgpRgBVmHFaFunq28GPC3IvW7Nvc3Y8SnAW7pP1EQIbhlwRIaQzJ93/yj
19
+ u95KpkP7tA9erypnV7dpzBkzNlX14ACaFD/6pHoXoe2ltBxk3CCyyzx70mTqJpph
20
+ 75IB03ni9a8yqn8pmse+s83bFJOAqddSj009sGPcQO+QOWiNxqYv1n5EHcvj2ebO
21
+ 6hN7YTmhx7aSia4qL/quc4DlIaGMWoAhvML7u1fmo53CYxkKskfN8MOecq2vfEmL
22
+ iLu+SsVVEAufMDDFMXMJlvDsviolUSGMSNRTujkyCcJoXKYYxZSNtIiyd9etI0X3
23
+ ctu0uhrFyrMZXCedutvXNjUolD5r9KGBFSWH1R9u2I3n3SAyFF2yzv/7idQHLJJq
24
+ 74BMnx0FIq6fCpu5slAipvxZ3ZkZpEXZFr3cIBtO1gFvQWW7E/Y3ijliWJS1GQFq
25
+ 058qERadHGu1yu1dojmFRo6W2KZvY9al2yIlbkpDrD5MYQIDAQABo3cwdTAJBgNV
26
+ HRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUFZsMapgzJimzsbaBG2Tm8j5e
27
+ AzgwHQYDVR0RBBYwFIESZGpiZXJnOTZAZ21haWwuY29tMB0GA1UdEgQWMBSBEmRq
28
+ YmVyZzk2QGdtYWlsLmNvbTANBgkqhkiG9w0BAQsFAAOCAYEAW2tnYixXQtKxgGXq
29
+ /3iSWG2bLwvxS4go3srO+aRXZHrFUMlJ5W0mCxl03aazxxKTsVVpZD8QZxvK91OQ
30
+ h9zr9JBYqCLcCVbr8SkmYCi/laxIZxsNE5YI8cC8vvlLI7AMgSfPSnn/Epq1GjGY
31
+ 6L1iRcEDtanGCIvjqlCXO9+BmsnCfEVehqZkQHeYczA03tpOWb6pon2wzvMKSsKH
32
+ ks0ApVdstSLz1kzzAqem/uHdG9FyXdbTAwH1G4ZPv69sQAFAOCgAqYmdnzedsQtE
33
+ 1LQfaQrx0twO+CZJPcRLEESjq8ScQxWRRkfuh2VeR7cEU7L7KqT10mtUwrvw7APf
34
+ DYoeCY9KyjIBjQXfbj2ke5u1hZj94Fsq9FfbEQg8ygCgwThnmkTrrKEiMSs3alYR
35
+ ORVCZpRuCPpmC8qmqxUnARDArzucjaclkxjLWvCVHeFa9UP7K3Nl9oTjJNv+7/jM
36
+ WZs4eecIcUc4tKdHxcAJ0MO/Dkqq7hGaiHpwKY76wQ1+8xAh
37
+ -----END CERTIFICATE-----
38
+ date:
13
39
  dependencies:
14
40
  - !ruby/object:Gem::Dependency
15
- name: sys-admin
41
+ name: rake
16
42
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
43
  requirements:
19
- - - ! '>='
44
+ - - ">="
20
45
  - !ruby/object:Gem::Version
21
- version: 1.5.2
22
- type: :runtime
46
+ version: '0'
47
+ type: :development
23
48
  prerelease: false
24
49
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
50
  requirements:
27
- - - ! '>='
51
+ - - ">="
28
52
  - !ruby/object:Gem::Version
29
- version: 1.5.2
53
+ version: '0'
30
54
  - !ruby/object:Gem::Dependency
31
- name: test-unit
55
+ name: rspec
32
56
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
57
  requirements:
35
- - - ! '>='
58
+ - - "~>"
36
59
  - !ruby/object:Gem::Version
37
- version: '0'
60
+ version: '3.9'
38
61
  type: :development
39
62
  prerelease: false
40
63
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
64
  requirements:
43
- - - ! '>='
65
+ - - "~>"
44
66
  - !ruby/object:Gem::Version
45
- version: '0'
46
- description: ! " The dbi-dbrc library provides an interface for storing database\n
47
- \ connection information, including passwords, in a locally secure\n file only
48
- accessible by you, or root. This allows you to avoid\n hard coding login and
49
- password information in your programs\n that require such information.\n\n This
50
- library can also be used to store login and password information\n for logins
51
- on remote hosts, not just databases.\n"
67
+ version: '3.9'
68
+ - !ruby/object:Gem::Dependency
69
+ name: fakefs
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '1.3'
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '1.3'
82
+ description: |2
83
+ The dbi-dbrc library provides an interface for storing database
84
+ connection information, including passwords, in a locally secure
85
+ file only accessible by you, or root. This allows you to avoid
86
+ hard coding login and password information in your programs
87
+ that require such information.
88
+
89
+ This library can also be used to store login and password information
90
+ for logins on remote hosts, not just databases.
52
91
  email: djberg96@gmail.com
53
92
  executables: []
54
93
  extensions: []
55
- extra_rdoc_files:
56
- - README
57
- - CHANGES
58
- - MANIFEST
94
+ extra_rdoc_files: []
59
95
  files:
60
- - CHANGES
61
96
  - dbi-dbrc.gemspec
97
+ - spec
98
+ - spec/spec_helper.rb
99
+ - spec/dbi_dbrc_yml_spec.rb
100
+ - spec/dbi_dbrc_spec.rb
101
+ - spec/dbi_dbrc_xml_spec.rb
102
+ - README.md
103
+ - Rakefile
104
+ - MANIFEST.md
105
+ - certs
106
+ - certs/djberg96_pub.pem
107
+ - examples
108
+ - examples/plain
62
109
  - examples/plain/test.rb
110
+ - examples/xml
63
111
  - examples/xml/test_xml.rb
112
+ - examples/yml
64
113
  - examples/yml/test_yml.rb
114
+ - lib
115
+ - lib/dbi
65
116
  - lib/dbi/dbrc.rb
66
- - MANIFEST
67
- - Rakefile
68
- - README
69
- - test/test_dbi_dbrc.rb
70
- - test/test_dbi_dbrc_xml.rb
71
- - test/test_dbi_dbrc_yml.rb
117
+ - lib/dbi-dbrc.rb
118
+ - Gemfile
119
+ - CHANGES.md
72
120
  homepage: https://github.com/djberg96/dbi-dbrc
73
121
  licenses:
74
- - Artistic 2.0
75
- post_install_message:
122
+ - Apache-2.0
123
+ metadata:
124
+ homepage_uri: https://github.com/djberg96/dbi-dbrc
125
+ bug_tracker_uri: https://github.com/djberg96/dbi-dbrc/issues
126
+ changelog_uri: https://github.com/djberg96/dbi-dbrc/blob/main/CHANGES
127
+ documentation_uri: https://github.com/djberg96/dbi-dbrc/wiki
128
+ source_code_uri: https://github.com/djberg96/dbi-dbrc
129
+ wiki_uri: https://github.com/djberg96/dbi-dbrc/wiki
130
+ post_install_message:
76
131
  rdoc_options: []
77
132
  require_paths:
78
133
  - lib
79
134
  required_ruby_version: !ruby/object:Gem::Requirement
80
- none: false
81
135
  requirements:
82
- - - ! '>='
136
+ - - ">="
83
137
  - !ruby/object:Gem::Version
84
138
  version: '0'
85
139
  required_rubygems_version: !ruby/object:Gem::Requirement
86
- none: false
87
140
  requirements:
88
- - - ! '>='
141
+ - - ">="
89
142
  - !ruby/object:Gem::Version
90
143
  version: '0'
91
144
  requirements: []
92
- rubyforge_project: shards
93
- rubygems_version: 1.8.24
94
- signing_key:
95
- specification_version: 3
145
+ rubygems_version: 3.2.15
146
+ signing_key:
147
+ specification_version: 4
96
148
  summary: A simple way to avoid hard-coding passwords with DBI
97
- test_files:
98
- - test/test_dbi_dbrc.rb
99
- - test/test_dbi_dbrc_xml.rb
100
- - test/test_dbi_dbrc_yml.rb
149
+ test_files: []
metadata.gz.sig ADDED
Binary file
data/README DELETED
@@ -1,260 +0,0 @@
1
- == Description
2
- This is a supplement to the dbi module, allowing you to avoid hard-coding
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.
6
-
7
- == Requirements
8
- * sys-admin
9
- * win32-file (MS Windows only)
10
- * win32-dir (MS Windows only)
11
- * win32-process (MS Windows only)
12
-
13
- == Installation
14
- gem install dbi-dbrc
15
-
16
- == Synopsis
17
- require 'dbi/dbrc'
18
- include DBI
19
-
20
- dbrc = DBRC.new('mydb')
21
-
22
- or
23
-
24
- dbrc = DBRC.new('mydb', 'someUser')
25
-
26
- puts dbrc.db
27
- puts dbrc.user
28
- puts dbrc.driver
29
- puts dbrc.timeout
30
- puts dbrc.max_reconn
31
- puts dbrc.interval
32
- puts dbrc.dsn
33
-
34
- == Notes on the .dbrc file
35
- This module relies on a file in your home directory called ".dbrc", and it
36
- is meant to be analogous to the ".netrc" file used by programs such as
37
- telnet. The .dbrc file has several conditions that must be met by the
38
- module or it will fail:
39
-
40
- * Permissions must be set to 600 (Unix only).
41
- * Must be hidden (MS Windows only).
42
- * Must be owned by the current user.
43
- * Must have database, user and password. Other fields are optional.
44
- * Must be in the following space-separated format (in the 'plain' version):
45
-
46
- database user password driver timeout maximum_reconnects interval
47
-
48
- e.g. mydb dan mypass oracle 10 2 30
49
-
50
- You may include comments in the .dbrc file by starting the line with a
51
- "#" symbol.
52
-
53
- A failure in any of the rules mentioned above will result in a DBRC::Error
54
- being raised. In addition, the file may also be encrypted on MS Windows
55
- systems, in which case the file will automatically be (temporarily)
56
- decrypted.
57
-
58
- The format for XML (using the example above) is as follows:
59
-
60
- <dbrc>
61
- <database name="mydb">
62
- <user>dan</user>
63
- <password>mypass</password>
64
- <driver>oracle</driver>
65
- <interval>30</interval>
66
- <timeout>10</timeout>
67
- <maximum_reconnects>2</maximum_reconnects>
68
- </database>
69
- </dbrc>
70
-
71
- The format for YAML is as follows:
72
-
73
- - mydb:
74
- user: dan
75
- password: mypass
76
- driver: oracle
77
- interval: 30
78
- timeout: 10
79
- max_reconn: 2
80
-
81
- == Constants
82
- VERSION
83
- The current version of this library, returned as a String.
84
-
85
- == Class Methods
86
- DBRC.new(db, user=nil, dir=nil)
87
- The constructor takes one to three arguments. The first argument is the
88
- database name. This *must* be provided. If only the database name is
89
- passed, the module will look for the first database entry in the .dbrc
90
- file that matches.
91
-
92
- The second argument, a user name, is optional. If it is passed, the
93
- module will look for the first entry in the .dbrc file where both the
94
- database *and* user name match.
95
-
96
- The third argument, also optional, specifies the directory where DBRC will
97
- look for the .dbrc file. By default, it looks in the pwuid (present
98
- working user id) home directory. The rules for a .dbrc file still apply.
99
-
100
- MS Windows users should read the "Notes" section for how your home directory
101
- is determined.
102
-
103
- == Instance Methods
104
- DBRC#database
105
- The name of the database. Note that the same entry can appear more than
106
- once, presumably because you have multiple user id's for the same
107
- database.
108
-
109
- DBRC#db
110
- An alias for DBRC#database.
111
-
112
- DBRC#database=(database)
113
- Sets the database to +database+. This is generally discouraged because
114
- it does not automatically reset the dsn.
115
-
116
- DBRC#db=(database)
117
- An alias for DBRC#database=.
118
-
119
- DBRC#user
120
- A valid user name for that database.
121
-
122
- DBRC#user=(user)
123
- Sets the user name to +user+.
124
-
125
- DBRC#password
126
- The password for that user.
127
-
128
- DBRC#passwd
129
- An alias for DBRC#password.
130
-
131
- DBRC#password=(password)
132
- Sets the password to +password+.
133
-
134
- DBRC#passwd=(password)
135
- An alias for DBRC#password=.
136
-
137
- DBRC#driver
138
- The driver type for that database (Oracle, MySql, etc).
139
-
140
- DBRC#driver=(driver)
141
- Sets the driver to +driver+. This use is discouraged because it does
142
- not reset the dsn.
143
-
144
- DBRC#timeout
145
- The timeout period for a connection before the attempt is dropped.
146
-
147
- DBRC#time_out
148
- An alias for DBRC#timeout, provided purely for the sake of backwards
149
- compatability.
150
-
151
- DBRC#timeout=(int)
152
- Sets the timeout value to +int+.
153
-
154
- DBRC#maximum_reconnects
155
- The maximum number of reconnect attempts that should be made for the the
156
- database. Presumablly, you would use this with a "retry" within a rescue
157
- block.
158
-
159
- DBRC#max_reconn
160
- An alias for DBRC#maximum_reconnects.
161
-
162
- DBRC#maximum_reconnects=(max)
163
- Sets the maximum number of reconnect attempts to +max+.
164
-
165
- DBRC#max_reconn=(max)
166
- An alias for DBRC#maximum_reconnects.
167
-
168
- DBRC#interval
169
- The number of seconds to wait before attempting to reconnect to the database
170
- again should a network/database glitch occur.
171
-
172
- DBRC#interval=(int)
173
- Sets the interval seconds between connection attempts.
174
-
175
- DBRC#dsn
176
- Returns a string in "dbi:<driver>:<database>" format.
177
-
178
- DBRC#dsn=(dsn)
179
- Sets the dsn string to +dsn+. This method is discouraged because it does
180
- not automatically reset the driver or database.
181
-
182
- == Canonical Example
183
- # This is a basic template for how I do things:
184
-
185
- require 'dbi/dbrc'
186
- require 'timeout'
187
-
188
- db = DBI::DBRC.new("somedb")
189
- n = db.max_reconn
190
-
191
- begin
192
- Timeout.timeout(db.timeout){
193
- DBI.connect(db.dsn, db.user, db.passwd)
194
- }
195
- rescue DBI::Error
196
- n -= 1
197
- if n > 0
198
- sleep db.interval
199
- retry
200
- end
201
- raise
202
- rescue TimeoutError
203
- # handle timeout error
204
- end
205
-
206
- == Notes for MS Windows Users
207
- The 'home' directory for Win32 users is determined by ENV['USERPROFILE'].
208
- If that is not set, ENV['HOME'] is used. If that is not set, then
209
- the directory found by the sys-admin library is used.
210
-
211
- To make your file hidden, right click on the .dbrc file in your Explorer
212
- window, select "Properties" and check the "Hidden" checkbox.
213
-
214
- I was going to require that the .dbrc file be encrypted on MS Windows,
215
- but that may require an official "certificate", assigned to you by a third
216
- party, which is a bit much to expect. However, if the file is encrypted,
217
- DBRC will attempt to decrypt it, parse it, and encrypt it again when done
218
- parsing.
219
-
220
- == Notes on running the test suite
221
- I cannot guarantee that the .dbrc files under the +examples+
222
- subdirectories maintain the appropriate properties. This can cause
223
- failures for the test suite (which uses these files).
224
-
225
- The only solution is to perform a 'chmod 600 .dbrc' (on Unix) or set
226
- the properties to 'hidden' (on MS Windows) manually, for the file in
227
- question.
228
-
229
- == Summary
230
- These "methods" don't really do anything. They're simply meant as a
231
- convenience mechanism for you dbi connections, plus a little bit of
232
- obfuscation (for passwords).
233
-
234
- == Adding your own configuration
235
- If you want to add your own type of configuration file, you can still use
236
- the dbi-dbrc library. All you need to do is:
237
-
238
- * subclass DBRC
239
- * redefine the +parse_dbrc_config_file+ method (a private method).
240
-
241
- Take a look at the XML and YML subclasses in dbrc.rb for two examples that
242
- you can work from.
243
-
244
- == Future Plans
245
- Add DBI::DBRC::JSON.
246
-
247
- == Known Bugs
248
- I'm not positive about the dsn strings for databases other than Oracle.
249
- If it's not correct, please let me know.
250
-
251
- == Copyright
252
- (C) Copyright 2002-2013, Daniel J. Berger, all rights reserved.
253
-
254
- = Warranty
255
- This package is provided "as is" and without any express or
256
- implied warranties, including, without limitation, the implied
257
- warranties of merchantability and fitness for a particular purpose
258
-
259
- == Author
260
- Daniel J. Berger