dbi-dbrc 1.3.0 → 1.7.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,101 @@
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
+
59
+ if File::ALT_SEPARATOR
60
+ allow(FakeFS::File).to receive(:hidden?).and_return(true)
61
+ allow(FakeFS::File).to receive(:encrypted?).and_return(false)
62
+ end
63
+
64
+ FileUtils.mkdir_p(home)
65
+ File.open(dbrc, 'w'){ |fh| fh.write(xml) }
66
+ File.chmod(0600, dbrc)
67
+
68
+ # FakeFS doesn't implement this yet
69
+ allow_any_instance_of(FakeFS::File::Stat).to receive(:owned?).and_return(true)
70
+ end
71
+
72
+ context "instance methods" do
73
+ before do
74
+ @dbrc = described_class.new(db_foo, user1)
75
+ end
76
+
77
+ example "database method returns expected value" do
78
+ expect(@dbrc.database).to eq('foo')
79
+ end
80
+
81
+ example "password method returns expected value" do
82
+ expect(@dbrc.password).to eq('pwd1')
83
+ end
84
+
85
+ example "driver method returns expected value" do
86
+ expect(@dbrc.driver).to eq('Oracle')
87
+ end
88
+
89
+ example "interval method returns expected value" do
90
+ expect(@dbrc.interval).to eq(60)
91
+ end
92
+
93
+ example "timeout method returns expected value" do
94
+ expect(@dbrc.timeout).to eq(40)
95
+ end
96
+
97
+ example "maximum_reconnects method returns expected value" do
98
+ expect(@dbrc.maximum_reconnects).to eq(3)
99
+ end
100
+ end
101
+ end
@@ -0,0 +1,95 @@
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
+
53
+ if File::ALT_SEPARATOR
54
+ allow(FakeFS::File).to receive(:hidden?).and_return(true)
55
+ allow(FakeFS::File).to receive(:encrypted?).and_return(false)
56
+ end
57
+
58
+ FileUtils.mkdir_p(home)
59
+ File.open(dbrc, 'w'){ |fh| fh.write(yml) }
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,6 @@
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
+ config.filter_run_excluding(:unix) if RbConfig::CONFIG['host_os'] =~ /mswin|win32|dos|mingw|cygwin/i
6
+ end
metadata CHANGED
@@ -1,53 +1,58 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dbi-dbrc
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Berger
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDcDCCAligAwIBAgIBATANBgkqhkiG9w0BAQUFADA/MREwDwYDVQQDDAhkamJl
13
+ MIIEcDCCAtigAwIBAgIBATANBgkqhkiG9w0BAQsFADA/MREwDwYDVQQDDAhkamJl
14
14
  cmc5NjEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPyLGQBGRYDY29t
15
- MB4XDTE1MDkwMjIwNDkxOFoXDTE2MDkwMTIwNDkxOFowPzERMA8GA1UEAwwIZGpi
15
+ MB4XDTE4MDMxODE1MjIwN1oXDTI4MDMxNTE1MjIwN1owPzERMA8GA1UEAwwIZGpi
16
16
  ZXJnOTYxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkWA2Nv
17
- bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMyTkvXqRp6hLs9eoJOS
18
- Hmi8kRYbq9Vkf15/hMxJpotYMgJVHHWrmDcC5Dye2PbnXjTkKf266Zw0PtT9h+lI
19
- S3ts9HO+vaCFSMwFFZmnWJSpQ3CNw2RcHxjWkk9yF7imEM8Kz9ojhiDXzBetdV6M
20
- gr0lV/alUr7TNVBDngbXEfTWscyXh1qd7xZ4EcOdsDktCe5G45N/o3662tPQvJsi
21
- FOF0CM/KuBsa/HL1/eoEmF4B3EKIRfTHrQ3hu20Kv3RJ88QM4ec2+0dd97uX693O
22
- zv6981fyEg+aXLkxrkViM/tz2qR2ZE0jPhHTREPYeMEgptRkTmWSKAuLVWrJEfgl
23
- DtkCAwEAAaN3MHUwCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0OBBYEFEwe
24
- nn6bfJADmuIDiMSOzedOrL+xMB0GA1UdEQQWMBSBEmRqYmVyZzk2QGdtYWlsLmNv
25
- bTAdBgNVHRIEFjAUgRJkamJlcmc5NkBnbWFpbC5jb20wDQYJKoZIhvcNAQEFBQAD
26
- ggEBAHmNOCWoDVD75zHFueY0viwGDVP1BNGFC+yXcb7u2GlK+nEMCORqzURbYPf7
27
- tL+/hzmePIRz7i30UM//64GI1NLv9jl7nIwjhPpXpf7/lu2I9hOTsvwSumb5UiKC
28
- /sqBxI3sfj9pr79Wpv4MuikX1XPik7Ncb7NPsJPw06Lvyc3Hkg5X2XpPtLtS+Gr2
29
- wKJnmzb5rIPS1cmsqv0M9LPWflzfwoZ/SpnmhagP+g05p8bRNKjZSA2iImM/GyYZ
30
- EJYzxdPOrx2n6NYR3Hk+vHP0U7UBSveI6+qx+ndQYaeyCn+GRX2PKS9h66YF/Q1V
31
- tGSHgAmcLlkdGgan182qsE/4kKM=
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
32
37
  -----END CERTIFICATE-----
33
- date: 2015-10-05 00:00:00.000000000 Z
38
+ date: 2021-06-19 00:00:00.000000000 Z
34
39
  dependencies:
35
40
  - !ruby/object:Gem::Dependency
36
- name: sys-admin
41
+ name: gpgme
37
42
  requirement: !ruby/object:Gem::Requirement
38
43
  requirements:
39
- - - ">="
44
+ - - "~>"
40
45
  - !ruby/object:Gem::Version
41
- version: '0'
46
+ version: '2.0'
42
47
  type: :runtime
43
48
  prerelease: false
44
49
  version_requirements: !ruby/object:Gem::Requirement
45
50
  requirements:
46
- - - ">="
51
+ - - "~>"
47
52
  - !ruby/object:Gem::Version
48
- version: '0'
53
+ version: '2.0'
49
54
  - !ruby/object:Gem::Dependency
50
- name: test-unit
55
+ name: rake
51
56
  requirement: !ruby/object:Gem::Requirement
52
57
  requirements:
53
58
  - - ">="
@@ -60,6 +65,34 @@ dependencies:
60
65
  - - ">="
61
66
  - !ruby/object:Gem::Version
62
67
  version: '0'
68
+ - !ruby/object:Gem::Dependency
69
+ name: rspec
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '3.9'
75
+ type: :development
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '3.9'
82
+ - !ruby/object:Gem::Dependency
83
+ name: fakefs
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '1.3'
89
+ type: :development
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '1.3'
63
96
  description: |2
64
97
  The dbi-dbrc library provides an interface for storing database
65
98
  connection information, including passwords, in a locally secure
@@ -72,29 +105,39 @@ description: |2
72
105
  email: djberg96@gmail.com
73
106
  executables: []
74
107
  extensions: []
75
- extra_rdoc_files:
76
- - README
77
- - CHANGES
78
- - MANIFEST
108
+ extra_rdoc_files: []
79
109
  files:
80
- - CHANGES
81
- - MANIFEST
82
- - README
110
+ - CHANGES.md
111
+ - Gemfile
112
+ - MANIFEST.md
113
+ - README.md
83
114
  - Rakefile
84
115
  - certs/djberg96_pub.pem
85
116
  - dbi-dbrc.gemspec
86
117
  - examples/plain/test.rb
87
118
  - examples/xml/test_xml.rb
88
119
  - examples/yml/test_yml.rb
120
+ - lib/dbi-dbrc.rb
89
121
  - lib/dbi/dbrc.rb
90
- - test/test_dbi_dbrc.rb
91
- - test/test_dbi_dbrc_xml.rb
92
- - test/test_dbi_dbrc_yml.rb
122
+ - lib/dbi/dbrc/json.rb
123
+ - lib/dbi/dbrc/xml.rb
124
+ - lib/dbi/dbrc/yaml.rb
125
+ - spec/dbi_dbrc_json_spec.rb
126
+ - spec/dbi_dbrc_spec.rb
127
+ - spec/dbi_dbrc_xml_spec.rb
128
+ - spec/dbi_dbrc_yml_spec.rb
129
+ - spec/spec_helper.rb
93
130
  homepage: https://github.com/djberg96/dbi-dbrc
94
131
  licenses:
95
- - Apache 2.0
96
- metadata: {}
97
- post_install_message:
132
+ - Apache-2.0
133
+ metadata:
134
+ homepage_uri: https://github.com/djberg96/dbi-dbrc
135
+ bug_tracker_uri: https://github.com/djberg96/dbi-dbrc/issues
136
+ changelog_uri: https://github.com/djberg96/dbi-dbrc/blob/main/CHANGES.md
137
+ documentation_uri: https://github.com/djberg96/dbi-dbrc/wiki
138
+ source_code_uri: https://github.com/djberg96/dbi-dbrc
139
+ wiki_uri: https://github.com/djberg96/dbi-dbrc/wiki
140
+ post_install_message:
98
141
  rdoc_options: []
99
142
  require_paths:
100
143
  - lib
@@ -109,12 +152,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
109
152
  - !ruby/object:Gem::Version
110
153
  version: '0'
111
154
  requirements: []
112
- rubyforge_project:
113
- rubygems_version: 2.4.5
114
- signing_key:
155
+ rubygems_version: 3.2.15
156
+ signing_key:
115
157
  specification_version: 4
116
158
  summary: A simple way to avoid hard-coding passwords with DBI
117
- test_files:
118
- - test/test_dbi_dbrc.rb
119
- - test/test_dbi_dbrc_xml.rb
120
- - test/test_dbi_dbrc_yml.rb
159
+ test_files: []
metadata.gz.sig CHANGED
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-attributes (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-2014, 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