rdbi 1.1.0 → 1.2.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.
- checksums.yaml +5 -5
- data/Manifest.txt +17 -7
- data/Rakefile +10 -48
- data/lib/rdbi/database.rb +2 -0
- data/lib/rdbi/types.rb +3 -4
- data/lib/rdbi/version.rb +3 -0
- data/lib/rdbi.rb +31 -4
- data/rdbi.gemspec +26 -84
- data/test/helper.rb +4 -3
- data/test/test_database.rb +2 -2
- data/test/test_implicit_load.rb +118 -0
- data/test/test_pool.rb +15 -18
- data/test/testlib/rdbi/driver/stringsubdir.rb +7 -0
- data/test/testlib/rdbi/driver/stringsubdircached.rb +7 -0
- data/test/testlib/rdbi/driver/symbolsubdir.rb +7 -0
- data/test/testlib/rdbi/driver/symbolsubdircached.rb +7 -0
- data/test/testlib/rdbi-driver-stringhyphen.rb +7 -0
- data/test/testlib/rdbi-driver-stringhyphencached.rb +7 -0
- data/test/testlib/rdbi-driver-symbolhyphen.rb +7 -0
- data/test/testlib/rdbi-driver-symbolhyphencached.rb +7 -0
- metadata +61 -145
- data/.gemtest +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6fabebd8c63804d35c4fa9c56404efa2d1016eb3f6a33557b17fa1248f8acc9f
|
4
|
+
data.tar.gz: b9bbf76bd89ed5e8b621473e9b87e29312af08794e29ccf251720c657dd3e83f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f9d56476c1d515c40630aac03bb44a5e4b3dee532be8264e1952e1902e2961a97b7a55ae7c76c6e39b04629e702145520a7f31aa4ff4a847364ee1c7257f669e
|
7
|
+
data.tar.gz: e2ed4a28770337d94978679b1387dd89221d048c3c092f8f7d1a93627f8933e61b2537db2dfc07eccc268c68b39fad6b694881d30e8235a6ed5c88c457884dad
|
data/Manifest.txt
CHANGED
@@ -1,25 +1,35 @@
|
|
1
|
-
.gemtest
|
2
|
-
History.txt
|
3
|
-
LICENSE
|
4
|
-
Manifest.txt
|
5
|
-
README.txt
|
6
|
-
Rakefile
|
7
1
|
docs/external-api.pdf
|
8
2
|
docs/external-api.texi
|
9
|
-
|
3
|
+
.gemtest
|
4
|
+
History.txt
|
10
5
|
lib/rdbi/cursor.rb
|
11
6
|
lib/rdbi/database.rb
|
12
7
|
lib/rdbi/driver.rb
|
13
8
|
lib/rdbi/pool.rb
|
9
|
+
lib/rdbi.rb
|
14
10
|
lib/rdbi/result.rb
|
15
11
|
lib/rdbi/schema.rb
|
16
12
|
lib/rdbi/statement.rb
|
17
13
|
lib/rdbi/types.rb
|
14
|
+
lib/rdbi/version.rb
|
15
|
+
LICENSE
|
16
|
+
Manifest.txt
|
18
17
|
perf/bench.rb
|
19
18
|
perf/profile.rb
|
19
|
+
Rakefile
|
20
20
|
rdbi.gemspec
|
21
|
+
README.txt
|
21
22
|
test/helper.rb
|
22
23
|
test/test_database.rb
|
24
|
+
test/test_implicit_load.rb
|
25
|
+
test/testlib/rdbi-driver-stringhyphencached.rb
|
26
|
+
test/testlib/rdbi-driver-stringhyphen.rb
|
27
|
+
test/testlib/rdbi/driver/stringsubdircached.rb
|
28
|
+
test/testlib/rdbi/driver/stringsubdir.rb
|
29
|
+
test/testlib/rdbi-driver-symbolhyphencached.rb
|
30
|
+
test/testlib/rdbi-driver-symbolhyphen.rb
|
31
|
+
test/testlib/rdbi/driver/symbolsubdircached.rb
|
32
|
+
test/testlib/rdbi/driver/symbolsubdir.rb
|
23
33
|
test/test_pool.rb
|
24
34
|
test/test_rdbi.rb
|
25
35
|
test/test_result.rb
|
data/Rakefile
CHANGED
@@ -1,53 +1,15 @@
|
|
1
|
-
|
1
|
+
require 'rake/testtask'
|
2
|
+
require 'rubygems/package_task'
|
2
3
|
|
3
|
-
require '
|
4
|
-
require 'hoe'
|
4
|
+
require File.expand_path('../lib/rdbi/version', __FILE__)
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
Hoe.plugin :reek
|
11
|
-
|
12
|
-
spec = Hoe.spec 'rdbi' do
|
13
|
-
developer 'Erik Hollensbe', 'erik@hollensbe.org'
|
14
|
-
|
15
|
-
self.rubyforge_name = nil
|
16
|
-
|
17
|
-
self.description = <<-EOF
|
18
|
-
RDBI is a database interface built out of small parts. A micro framework for
|
19
|
-
databases, RDBI works with and extends libraries like 'typelib' and 'epoxy'
|
20
|
-
to provide type conversion and binding facilities. Via a driver/adapter
|
21
|
-
system it provides database access. RDBI itself provides pooling and other
|
22
|
-
enhanced database features.
|
23
|
-
EOF
|
24
|
-
|
25
|
-
self.summary = 'RDBI is a database interface built out of small parts.'
|
26
|
-
self.urls = %w[http://github.com/rdbi/rdbi]
|
27
|
-
|
28
|
-
require_ruby_version ">= 1.8.7"
|
29
|
-
|
30
|
-
extra_dev_deps << ['rdbi-driver-mock']
|
31
|
-
extra_dev_deps << ['test-unit']
|
32
|
-
extra_dev_deps << ['rdoc']
|
33
|
-
extra_dev_deps << ['hanna-nouveau']
|
34
|
-
extra_dev_deps << ['fastercsv']
|
35
|
-
extra_dev_deps << ['hoe-roodi']
|
36
|
-
extra_dev_deps << ['hoe-reek']
|
37
|
-
extra_dev_deps << ['minitest']
|
38
|
-
|
39
|
-
extra_deps << ['epoxy', '>= 0.3.1']
|
40
|
-
extra_deps << ['typelib']
|
41
|
-
|
42
|
-
# waiting on a patch from hoe for this
|
43
|
-
#self.extra_rdoc_args = lambda do |rd|
|
44
|
-
#rd.generator = "hanna"
|
45
|
-
#end
|
46
|
-
|
47
|
-
desc "install a gem without sudo"
|
6
|
+
Rake::TestTask.new do |t|
|
7
|
+
t.libs << 'test'
|
8
|
+
#t.warning = true
|
9
|
+
t.verbose = true
|
48
10
|
end
|
49
11
|
|
50
|
-
|
51
|
-
sh "gem install pkg/#{spec.name}-#{spec.version}.gem"
|
12
|
+
Gem::PackageTask.new(eval(File.read("rdbi.gemspec"))) do
|
52
13
|
end
|
53
|
-
|
14
|
+
|
15
|
+
task :default => :test
|
data/lib/rdbi/database.rb
CHANGED
data/lib/rdbi/types.rb
CHANGED
@@ -16,7 +16,7 @@ require 'typelib/canned'
|
|
16
16
|
#
|
17
17
|
# RDBI::Type leverages +TypeLib+ which is a filter chaining system, one which
|
18
18
|
# you'll wish to read the documentation for to understand some of the concepts
|
19
|
-
# here.
|
19
|
+
# here.
|
20
20
|
#
|
21
21
|
# === A conversion follows these steps:
|
22
22
|
#
|
@@ -60,7 +60,7 @@ require 'typelib/canned'
|
|
60
60
|
#
|
61
61
|
# To perform conversions, look at RDBI::Type::In::convert and
|
62
62
|
# RDBI::Type::Out::convert.
|
63
|
-
#
|
63
|
+
#
|
64
64
|
module RDBI::Type
|
65
65
|
# A filter format to assist the conversions of DateTime objects.
|
66
66
|
DEFAULT_STRFTIME_FILTER = "%Y-%m-%d %H:%M:%S %z"
|
@@ -111,7 +111,7 @@ module RDBI::Type
|
|
111
111
|
FROM_DECIMAL = TypeLib::Filter.new(Checks::IS_BIGDECIMAL, Conversions::TO_STRING_DECIMAL)
|
112
112
|
FROM_DATETIME = TypeLib::Filter.new(Checks::IS_DATETIME, Conversions::TO_STRING_DATETIME)
|
113
113
|
FROM_BOOLEAN = TypeLib::Filter.new(Checks::IS_BOOLEAN, Conversions::TO_STRING_BOOLEAN)
|
114
|
-
|
114
|
+
|
115
115
|
TO_BOOLEAN = TypeLib::Filter.new(Checks::STR_IS_BOOLEAN, Conversions::SQL_STR_TO_BOOLEAN)
|
116
116
|
end
|
117
117
|
|
@@ -175,7 +175,6 @@ module RDBI::Type
|
|
175
175
|
module In
|
176
176
|
DEFAULTS = {
|
177
177
|
Integer => [Filters::FROM_INTEGER],
|
178
|
-
Fixnum => [Filters::FROM_INTEGER],
|
179
178
|
Float => [Filters::FROM_NUMERIC],
|
180
179
|
BigDecimal => [Filters::FROM_DECIMAL],
|
181
180
|
DateTime => [Filters::FROM_DATETIME],
|
data/lib/rdbi/version.rb
ADDED
data/lib/rdbi.rb
CHANGED
@@ -1,9 +1,7 @@
|
|
1
|
-
require '
|
1
|
+
require 'rdbi/version'
|
2
2
|
|
3
3
|
module RDBI
|
4
4
|
|
5
|
-
VERSION = '1.1.0'
|
6
|
-
|
7
5
|
class << self
|
8
6
|
#
|
9
7
|
# The last database handle allocated. This may come from pooled connections or regular ones.
|
@@ -28,7 +26,14 @@ module RDBI
|
|
28
26
|
# connection will be automatically disconnected at the end of the block.
|
29
27
|
def self.connect(klass, *args)
|
30
28
|
|
31
|
-
klass =
|
29
|
+
klass = case klass
|
30
|
+
when ::Class
|
31
|
+
klass
|
32
|
+
when ::String, ::Symbol
|
33
|
+
Util.resolve_driver(klass)
|
34
|
+
else
|
35
|
+
raise ArgumentError.new("Invalid driver specification")
|
36
|
+
end
|
32
37
|
|
33
38
|
driver = klass.new(*args)
|
34
39
|
dbh = self.last_dbh = driver.new_handle
|
@@ -121,6 +126,28 @@ module RDBI::Util
|
|
121
126
|
raise LoadError, "The '#{lib}' gem is required to use this driver. Please install it."
|
122
127
|
end
|
123
128
|
|
129
|
+
# Require and swallow errors. Returns true if module loaded (for the first
|
130
|
+
# time), false if already loaded or unable to load
|
131
|
+
def self.naive_require(lib)
|
132
|
+
require lib
|
133
|
+
rescue LoadError
|
134
|
+
nil
|
135
|
+
end
|
136
|
+
|
137
|
+
# Given a short driver name (e.g., :FauxSQL), return the corresponding
|
138
|
+
# class, attempting to load the driver library if needed.
|
139
|
+
def self.resolve_driver(driver)
|
140
|
+
loop do
|
141
|
+
return ::RDBI::Driver.const_get(driver.to_sym) if ::RDBI::Driver.const_defined?(driver.to_sym)
|
142
|
+
# const_defined? will throw a NameError if driver is not a valid
|
143
|
+
# constant name
|
144
|
+
redo if naive_require("rdbi-driver-#{driver.to_s.downcase}")
|
145
|
+
redo if naive_require("rdbi/driver/#{driver.to_s.downcase}")
|
146
|
+
break
|
147
|
+
end
|
148
|
+
raise ArgumentError.new("Unable to qualify driver #{driver}")
|
149
|
+
end
|
150
|
+
|
124
151
|
#
|
125
152
|
# This is the loading logic we use to import drivers of various natures.
|
126
153
|
#
|
data/rdbi.gemspec
CHANGED
@@ -1,92 +1,34 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
|
-
# -*- encoding: utf-8 -*-
|
1
|
+
require 'rake' # FileList
|
2
|
+
require File.expand_path('../lib/rdbi/version', __FILE__)
|
5
3
|
|
6
4
|
Gem::Specification.new do |s|
|
7
|
-
s.name
|
8
|
-
s.version
|
9
|
-
|
10
|
-
s.
|
11
|
-
s.
|
12
|
-
s.
|
5
|
+
s.name = %q{rdbi}
|
6
|
+
s.version = RDBI::VERSION
|
7
|
+
s.platform = Gem::Platform::RUBY
|
8
|
+
s.authors = ["Mike Pomraning", "Erik Hollensbe", "Pistos"]
|
9
|
+
s.date = %q{2023-06-05}
|
10
|
+
s.homepage = %q{http://github.com/RDBI/rdbi}
|
11
|
+
s.summary = "A ruby database abstraction layer"
|
13
12
|
s.description = %q{RDBI is a rearchitecture of the Ruby/DBI project by its maintainer and others. It intends to fully supplant Ruby/DBI in the future for similar database access needs.}
|
14
|
-
s.email
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
]
|
19
|
-
s.files = [
|
20
|
-
"LICENSE",
|
21
|
-
"README.txt",
|
22
|
-
"Rakefile",
|
23
|
-
"docs/external-api.pdf",
|
24
|
-
"docs/external-api.texi",
|
25
|
-
"lib/rdbi.rb",
|
26
|
-
"lib/rdbi/cursor.rb",
|
27
|
-
"lib/rdbi/database.rb",
|
28
|
-
"lib/rdbi/driver.rb",
|
29
|
-
"lib/rdbi/pool.rb",
|
30
|
-
"lib/rdbi/result.rb",
|
31
|
-
"lib/rdbi/schema.rb",
|
32
|
-
"lib/rdbi/statement.rb",
|
33
|
-
"lib/rdbi/types.rb",
|
34
|
-
"perf/bench.rb",
|
35
|
-
"perf/profile.rb",
|
36
|
-
"rdbi.gemspec",
|
37
|
-
"test/helper.rb",
|
38
|
-
"test/test_database.rb",
|
39
|
-
"test/test_pool.rb",
|
40
|
-
"test/test_rdbi.rb",
|
41
|
-
"test/test_result.rb",
|
42
|
-
"test/test_statement.rb",
|
43
|
-
"test/test_types.rb",
|
44
|
-
"test/test_util.rb"
|
45
|
-
]
|
46
|
-
s.homepage = %q{http://github.com/RDBI/rdbi}
|
13
|
+
s.email = ["mjp@pilcrow.madison.wi.us"]
|
14
|
+
|
15
|
+
s.required_rubygems_version = ">= 1.3.6"
|
16
|
+
|
47
17
|
s.require_paths = ["lib"]
|
48
|
-
s.rubygems_version = %q{1.3.7}
|
49
|
-
s.summary = %q{RDBI provides sane query-level database access with low magic.}
|
50
|
-
s.test_files = [
|
51
|
-
"test/helper.rb",
|
52
|
-
"test/test_database.rb",
|
53
|
-
"test/test_pool.rb",
|
54
|
-
"test/test_rdbi.rb",
|
55
|
-
"test/test_result.rb",
|
56
|
-
"test/test_statement.rb",
|
57
|
-
"test/test_types.rb",
|
58
|
-
"test/test_util.rb"
|
59
|
-
]
|
60
18
|
|
61
|
-
|
62
|
-
|
63
|
-
|
19
|
+
s.files = FileList["{lib,docs,perf,test}/**/*.*",
|
20
|
+
"rdbi.gemspec",
|
21
|
+
"History.txt",
|
22
|
+
"Manifest.txt",
|
23
|
+
"Rakefile",
|
24
|
+
"LICENSE"].to_a
|
25
|
+
s.test_files = FileList["test/**/*.*"].to_a
|
26
|
+
s.extra_rdoc_files = [ "LICENSE", "README.txt" ]
|
64
27
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
s.add_runtime_dependency(%q<methlab>, [">= 0.0.9"])
|
71
|
-
s.add_runtime_dependency(%q<epoxy>, [">= 0.3.1"])
|
72
|
-
s.add_runtime_dependency(%q<typelib>, [">= 0"])
|
73
|
-
else
|
74
|
-
s.add_dependency(%q<rdbi-driver-mock>, [">= 0"])
|
75
|
-
s.add_dependency(%q<test-unit>, [">= 0"])
|
76
|
-
s.add_dependency(%q<rdoc>, [">= 0"])
|
77
|
-
s.add_dependency(%q<fastercsv>, [">= 0"])
|
78
|
-
s.add_dependency(%q<methlab>, [">= 0.0.9"])
|
79
|
-
s.add_dependency(%q<epoxy>, [">= 0.3.1"])
|
80
|
-
s.add_dependency(%q<typelib>, [">= 0"])
|
81
|
-
end
|
82
|
-
else
|
83
|
-
s.add_dependency(%q<rdbi-driver-mock>, [">= 0"])
|
84
|
-
s.add_dependency(%q<test-unit>, [">= 0"])
|
85
|
-
s.add_dependency(%q<rdoc>, [">= 0"])
|
86
|
-
s.add_dependency(%q<fastercsv>, [">= 0"])
|
87
|
-
s.add_dependency(%q<methlab>, [">= 0.0.9"])
|
88
|
-
s.add_dependency(%q<epoxy>, [">= 0.3.1"])
|
89
|
-
s.add_dependency(%q<typelib>, [">= 0"])
|
90
|
-
end
|
28
|
+
s.add_development_dependency(%q<rdbi-driver-mock>, [">= 0"])
|
29
|
+
s.add_development_dependency(%q<test-unit>, [">= 0"])
|
30
|
+
s.add_development_dependency(%q<rdoc>, [">= 0"])
|
31
|
+
s.add_runtime_dependency(%q<epoxy>, [">= 0.3.1"])
|
32
|
+
s.add_runtime_dependency(%q<typelib>, [">= 0.1.1"])
|
91
33
|
end
|
92
34
|
|
data/test/helper.rb
CHANGED
@@ -1,11 +1,12 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
gem 'rdbi-driver-mock'
|
3
1
|
require 'test/unit'
|
4
2
|
|
5
3
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
6
4
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
5
|
+
|
7
6
|
require 'rdbi'
|
8
|
-
require 'rdbi/driver/mock'
|
7
|
+
require 'rdbi/driver/mock' # Aaargh 1.0.0 vs .9.x
|
8
|
+
|
9
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), 'testlib'))
|
9
10
|
|
10
11
|
# -- Fake an exceptional statement handle
|
11
12
|
module FaultyDB
|
data/test/test_database.rb
CHANGED
@@ -153,12 +153,12 @@ class TestDatabase < Test::Unit::TestCase
|
|
153
153
|
assert(sth)
|
154
154
|
assert_kind_of(RDBI::Statement, sth)
|
155
155
|
|
156
|
-
assert_equal(@dbh.last_statement.
|
156
|
+
assert_equal(@dbh.last_statement.query, sth.query)
|
157
157
|
|
158
158
|
res = @dbh.execute("some other statement")
|
159
159
|
assert(res)
|
160
160
|
assert_kind_of(RDBI::Result, res)
|
161
|
-
assert_not_equal(@dbh.last_statement.
|
161
|
+
assert_not_equal(@dbh.last_statement.query, sth.query)
|
162
162
|
sth.finish
|
163
163
|
end
|
164
164
|
|
@@ -0,0 +1,118 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
#puts RDBI.constants
|
4
|
+
|
5
|
+
class TestImplicitLoad < Test::Unit::TestCase
|
6
|
+
|
7
|
+
ConnectTests = {
|
8
|
+
# Mmmph. It would be nice if suites were run in separate processes
|
9
|
+
"StringHyphen" => { :found_here => 'rdbi-driver-stringhyphen',
|
10
|
+
:not_here => 'rdbi/driver/stringhyphen' },
|
11
|
+
:SymbolHyphen => { :found_here => 'rdbi-driver-symbolhyphen',
|
12
|
+
:not_here => 'rdbi/driver/symbolhyphen' },
|
13
|
+
"StringSubdir" => { :found_here => 'rdbi/driver/stringsubdir',
|
14
|
+
:not_here => 'rdbi-driver-stringsubdir' },
|
15
|
+
:SymbolSubdir => { :found_here => 'rdbi/driver/symbolsubdir',
|
16
|
+
:not_here => 'rdbi-driver-symbolsubdir' },
|
17
|
+
"StringHyphenCached" => { :found_here => 'rdbi-driver-stringhyphencached',
|
18
|
+
:not_here => 'rdbi/driver/stringhyphencached' },
|
19
|
+
:SymbolHyphenCached => { :found_here => 'rdbi-driver-symbolhyphencached',
|
20
|
+
:not_here => 'rdbi/driver/symbolhyphencached' },
|
21
|
+
"StringSubdirCached" => { :found_here => 'rdbi/driver/stringsubdircached',
|
22
|
+
:not_here => 'rdbi-driver-stringsubdircached' },
|
23
|
+
:SymbolSubdirCached => { :found_here => 'rdbi/driver/symbolsubdircached',
|
24
|
+
:not_here => 'rdbi-driver-symbolsubdircached' },
|
25
|
+
}
|
26
|
+
|
27
|
+
ConnectTests.each do |spec, feature|
|
28
|
+
meth = 'test_implicit_' + spec.to_s.gsub(/([a-z0-9])([A-Z])/, '\1_\2').downcase
|
29
|
+
how = (spec =~ /Cached/ ? :connect_cached : :connect)
|
30
|
+
define_method meth.to_sym do
|
31
|
+
assert_implicitly_loaded(how, spec, feature[:found_here], feature[:not_here])
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_01_module_loaded
|
36
|
+
require 'rdbi/driver/mock'
|
37
|
+
RDBI::Driver::Mock
|
38
|
+
assert(module_loaded?('RDBI::Driver::Mock'),
|
39
|
+
"Mock driver unexpectedly not loaded")
|
40
|
+
assert(!module_loaded?('RDBI::Driver::FauxSQL'),
|
41
|
+
"FauxSQL unexpectedly loaded already")
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_02_implicit_load_fail
|
45
|
+
assert(!module_loaded?('RDBI::Driver::NoSuchDriver'))
|
46
|
+
assert_raises(ArgumentError) do
|
47
|
+
RDBI.connect(:NoSuchDriver, {:username=>:a,:password=>:b})
|
48
|
+
end
|
49
|
+
assert(!module_loaded?('RDBI::Driver::NoSuchDriver'))
|
50
|
+
end
|
51
|
+
|
52
|
+
# ========== Utility =========================
|
53
|
+
|
54
|
+
# Is the given module loaded?
|
55
|
+
def module_loaded?(name)
|
56
|
+
names = name.split(/::/) # ::Foo::Bar -> ["", "Foo", "Bar"]
|
57
|
+
names.shift if names[0] == ""
|
58
|
+
resolved = names.inject(::Kernel) { |mod, n| mod = mod.const_get(n) }
|
59
|
+
resolved.is_a?(::Module)
|
60
|
+
rescue NameError => ne
|
61
|
+
nil
|
62
|
+
end
|
63
|
+
|
64
|
+
# For a given feature 'f' (which was or could be an argument to
|
65
|
+
# Kernel.require), see if it has already been loaded
|
66
|
+
def feature_loaded?(f)
|
67
|
+
#require 'pathname'
|
68
|
+
#f = ::Pathname.new(f).cleanpath
|
69
|
+
|
70
|
+
$LOADED_FEATURES.any? do |loaded|
|
71
|
+
loaded.match('(^|/)' + Regexp.quote(f) + '\.[^/]+$')
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
def assert_feature_loaded(f, msg = nil)
|
76
|
+
msg ||= "Feature #{f} unexpectedly not loaded"
|
77
|
+
assert(feature_loaded?(f), msg)
|
78
|
+
end
|
79
|
+
|
80
|
+
def assert_feature_not_loaded(f, msg = nil)
|
81
|
+
msg ||= "Feature #{f} unexpectedly already loaded"
|
82
|
+
assert(!feature_loaded?(f), msg)
|
83
|
+
end
|
84
|
+
|
85
|
+
def assert_module_loaded(m, msg = nil)
|
86
|
+
msg ||= "Module #{m} unexpectedly not loaded"
|
87
|
+
assert(module_loaded?(m), msg)
|
88
|
+
end
|
89
|
+
|
90
|
+
def assert_module_not_loaded(m, msg = nil)
|
91
|
+
msg ||= "Module #{m} unexpectedly already loaded"
|
92
|
+
assert(!module_loaded?(m), msg)
|
93
|
+
end
|
94
|
+
|
95
|
+
def assert_implicitly_loaded(connect_method, shortname, found_here, not_here)
|
96
|
+
qualified_name = "RDBI::Driver::#{shortname}"
|
97
|
+
|
98
|
+
assert_module_not_loaded(qualified_name)
|
99
|
+
assert_feature_not_loaded(found_here)
|
100
|
+
assert_feature_not_loaded(not_here)
|
101
|
+
|
102
|
+
conn_args = { :username => :a, :password => :b }
|
103
|
+
conn_args[:pool_name] = shortname.to_sym if connect_method == :connect_cached
|
104
|
+
dbh = ::RDBI.__send__(connect_method, shortname, conn_args)
|
105
|
+
assert_module_loaded(qualified_name)
|
106
|
+
|
107
|
+
klass = ::RDBI::Driver.const_get(shortname)
|
108
|
+
|
109
|
+
assert(dbh.connected?, "connect(#{shortname}) did not return connected DBH")
|
110
|
+
assert_kind_of(klass, dbh.driver,
|
111
|
+
"DBH.driver was not a #{klass.name}")
|
112
|
+
|
113
|
+
assert_feature_loaded(found_here)
|
114
|
+
assert_feature_not_loaded(not_here)
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
# vim: syntax=ruby ts=2 et sw=2 sts=2
|
data/test/test_pool.rb
CHANGED
@@ -134,23 +134,21 @@ class TestPool < Test::Unit::TestCase
|
|
134
134
|
end
|
135
135
|
|
136
136
|
def test_08_enumerable
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
assert_equal(10, RDBI::Pool.values.count)
|
137
|
+
pool_names = [
|
138
|
+
:test_01,
|
139
|
+
:test_02,
|
140
|
+
:test_03,
|
141
|
+
:test_03_2,
|
142
|
+
:test_04,
|
143
|
+
:test_05,
|
144
|
+
:test_06,
|
145
|
+
:test_07,
|
146
|
+
:test_07_2,
|
147
|
+
:test_07_3
|
148
|
+
]
|
149
|
+
assert( (pool_names - RDBI::Pool.keys).empty?,
|
150
|
+
"RDBI::Pool did not contain at least the expected pool names")
|
151
|
+
|
154
152
|
assert_kind_of(RDBI::Pool, RDBI::Pool.values[0])
|
155
153
|
|
156
154
|
count = 0
|
@@ -160,7 +158,6 @@ class TestPool < Test::Unit::TestCase
|
|
160
158
|
assert_kind_of(RDBI::Pool, pool)
|
161
159
|
end
|
162
160
|
|
163
|
-
assert_equal(10, count)
|
164
161
|
assert_respond_to(RDBI::Pool, :map)
|
165
162
|
|
166
163
|
pool = create_pool(:test_08)
|
metadata
CHANGED
@@ -1,199 +1,98 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rdbi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
+
- Mike Pomraning
|
7
8
|
- Erik Hollensbe
|
8
|
-
|
9
|
+
- Pistos
|
10
|
+
autorequire:
|
9
11
|
bindir: bin
|
10
12
|
cert_chain: []
|
11
|
-
date:
|
13
|
+
date: 2023-06-05 00:00:00.000000000 Z
|
12
14
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: epoxy
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - '>='
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 0.3.1
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - '>='
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 0.3.1
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: typelib
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - '>='
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '0'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - '>='
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: rdoc
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ~>
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '4.0'
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ~>
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '4.0'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rcov
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
59
|
-
- - ~>
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: '0.9'
|
62
|
-
type: :development
|
63
|
-
prerelease: false
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
65
|
-
requirements:
|
66
|
-
- - ~>
|
67
|
-
- !ruby/object:Gem::Version
|
68
|
-
version: '0.9'
|
69
15
|
- !ruby/object:Gem::Dependency
|
70
16
|
name: rdbi-driver-mock
|
71
17
|
requirement: !ruby/object:Gem::Requirement
|
72
18
|
requirements:
|
73
|
-
- -
|
19
|
+
- - ">="
|
74
20
|
- !ruby/object:Gem::Version
|
75
21
|
version: '0'
|
76
22
|
type: :development
|
77
23
|
prerelease: false
|
78
24
|
version_requirements: !ruby/object:Gem::Requirement
|
79
25
|
requirements:
|
80
|
-
- -
|
26
|
+
- - ">="
|
81
27
|
- !ruby/object:Gem::Version
|
82
28
|
version: '0'
|
83
29
|
- !ruby/object:Gem::Dependency
|
84
30
|
name: test-unit
|
85
31
|
requirement: !ruby/object:Gem::Requirement
|
86
32
|
requirements:
|
87
|
-
- -
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: '0'
|
90
|
-
type: :development
|
91
|
-
prerelease: false
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
93
|
-
requirements:
|
94
|
-
- - '>='
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
version: '0'
|
97
|
-
- !ruby/object:Gem::Dependency
|
98
|
-
name: hanna-nouveau
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
100
|
-
requirements:
|
101
|
-
- - '>='
|
33
|
+
- - ">="
|
102
34
|
- !ruby/object:Gem::Version
|
103
35
|
version: '0'
|
104
36
|
type: :development
|
105
37
|
prerelease: false
|
106
38
|
version_requirements: !ruby/object:Gem::Requirement
|
107
39
|
requirements:
|
108
|
-
- -
|
40
|
+
- - ">="
|
109
41
|
- !ruby/object:Gem::Version
|
110
42
|
version: '0'
|
111
43
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - '>='
|
116
|
-
- !ruby/object:Gem::Version
|
117
|
-
version: '0'
|
118
|
-
type: :development
|
119
|
-
prerelease: false
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
121
|
-
requirements:
|
122
|
-
- - '>='
|
123
|
-
- !ruby/object:Gem::Version
|
124
|
-
version: '0'
|
125
|
-
- !ruby/object:Gem::Dependency
|
126
|
-
name: hoe-roodi
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - '>='
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0'
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - '>='
|
137
|
-
- !ruby/object:Gem::Version
|
138
|
-
version: '0'
|
139
|
-
- !ruby/object:Gem::Dependency
|
140
|
-
name: hoe-reek
|
44
|
+
name: rdoc
|
141
45
|
requirement: !ruby/object:Gem::Requirement
|
142
46
|
requirements:
|
143
|
-
- -
|
47
|
+
- - ">="
|
144
48
|
- !ruby/object:Gem::Version
|
145
49
|
version: '0'
|
146
50
|
type: :development
|
147
51
|
prerelease: false
|
148
52
|
version_requirements: !ruby/object:Gem::Requirement
|
149
53
|
requirements:
|
150
|
-
- -
|
54
|
+
- - ">="
|
151
55
|
- !ruby/object:Gem::Version
|
152
56
|
version: '0'
|
153
57
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
58
|
+
name: epoxy
|
155
59
|
requirement: !ruby/object:Gem::Requirement
|
156
60
|
requirements:
|
157
|
-
- -
|
61
|
+
- - ">="
|
158
62
|
- !ruby/object:Gem::Version
|
159
|
-
version:
|
160
|
-
type: :
|
63
|
+
version: 0.3.1
|
64
|
+
type: :runtime
|
161
65
|
prerelease: false
|
162
66
|
version_requirements: !ruby/object:Gem::Requirement
|
163
67
|
requirements:
|
164
|
-
- -
|
68
|
+
- - ">="
|
165
69
|
- !ruby/object:Gem::Version
|
166
|
-
version:
|
70
|
+
version: 0.3.1
|
167
71
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
72
|
+
name: typelib
|
169
73
|
requirement: !ruby/object:Gem::Requirement
|
170
74
|
requirements:
|
171
|
-
- -
|
75
|
+
- - ">="
|
172
76
|
- !ruby/object:Gem::Version
|
173
|
-
version:
|
174
|
-
type: :
|
77
|
+
version: 0.1.1
|
78
|
+
type: :runtime
|
175
79
|
prerelease: false
|
176
80
|
version_requirements: !ruby/object:Gem::Requirement
|
177
81
|
requirements:
|
178
|
-
- -
|
82
|
+
- - ">="
|
179
83
|
- !ruby/object:Gem::Version
|
180
|
-
version:
|
181
|
-
description:
|
182
|
-
|
183
|
-
|
184
|
-
to provide type conversion and binding facilities. Via a driver/adapter
|
185
|
-
system it provides database access. RDBI itself provides pooling and other
|
186
|
-
enhanced database features.
|
84
|
+
version: 0.1.1
|
85
|
+
description: RDBI is a rearchitecture of the Ruby/DBI project by its maintainer and
|
86
|
+
others. It intends to fully supplant Ruby/DBI in the future for similar database
|
87
|
+
access needs.
|
187
88
|
email:
|
188
|
-
-
|
89
|
+
- mjp@pilcrow.madison.wi.us
|
189
90
|
executables: []
|
190
91
|
extensions: []
|
191
92
|
extra_rdoc_files:
|
192
|
-
-
|
193
|
-
- Manifest.txt
|
93
|
+
- LICENSE
|
194
94
|
- README.txt
|
195
95
|
files:
|
196
|
-
- .gemtest
|
197
96
|
- History.txt
|
198
97
|
- LICENSE
|
199
98
|
- Manifest.txt
|
@@ -210,47 +109,64 @@ files:
|
|
210
109
|
- lib/rdbi/schema.rb
|
211
110
|
- lib/rdbi/statement.rb
|
212
111
|
- lib/rdbi/types.rb
|
112
|
+
- lib/rdbi/version.rb
|
213
113
|
- perf/bench.rb
|
214
114
|
- perf/profile.rb
|
215
115
|
- rdbi.gemspec
|
216
116
|
- test/helper.rb
|
217
117
|
- test/test_database.rb
|
118
|
+
- test/test_implicit_load.rb
|
218
119
|
- test/test_pool.rb
|
219
120
|
- test/test_rdbi.rb
|
220
121
|
- test/test_result.rb
|
221
122
|
- test/test_statement.rb
|
222
123
|
- test/test_types.rb
|
223
124
|
- test/test_util.rb
|
224
|
-
|
125
|
+
- test/testlib/rdbi-driver-stringhyphen.rb
|
126
|
+
- test/testlib/rdbi-driver-stringhyphencached.rb
|
127
|
+
- test/testlib/rdbi-driver-symbolhyphen.rb
|
128
|
+
- test/testlib/rdbi-driver-symbolhyphencached.rb
|
129
|
+
- test/testlib/rdbi/driver/stringsubdir.rb
|
130
|
+
- test/testlib/rdbi/driver/stringsubdircached.rb
|
131
|
+
- test/testlib/rdbi/driver/symbolsubdir.rb
|
132
|
+
- test/testlib/rdbi/driver/symbolsubdircached.rb
|
133
|
+
homepage: http://github.com/RDBI/rdbi
|
225
134
|
licenses: []
|
226
135
|
metadata: {}
|
227
|
-
post_install_message:
|
228
|
-
rdoc_options:
|
229
|
-
- --main
|
230
|
-
- README.txt
|
136
|
+
post_install_message:
|
137
|
+
rdoc_options: []
|
231
138
|
require_paths:
|
232
139
|
- lib
|
233
140
|
required_ruby_version: !ruby/object:Gem::Requirement
|
234
141
|
requirements:
|
235
|
-
- -
|
142
|
+
- - ">="
|
236
143
|
- !ruby/object:Gem::Version
|
237
|
-
version:
|
144
|
+
version: '0'
|
238
145
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
239
146
|
requirements:
|
240
|
-
- -
|
147
|
+
- - ">="
|
241
148
|
- !ruby/object:Gem::Version
|
242
|
-
version:
|
149
|
+
version: 1.3.6
|
243
150
|
requirements: []
|
244
|
-
|
245
|
-
|
246
|
-
signing_key:
|
151
|
+
rubygems_version: 3.4.10
|
152
|
+
signing_key:
|
247
153
|
specification_version: 4
|
248
|
-
summary:
|
154
|
+
summary: A ruby database abstraction layer
|
249
155
|
test_files:
|
250
|
-
- test/
|
156
|
+
- test/helper.rb
|
157
|
+
- test/test_database.rb
|
158
|
+
- test/test_implicit_load.rb
|
251
159
|
- test/test_pool.rb
|
252
160
|
- test/test_rdbi.rb
|
161
|
+
- test/test_result.rb
|
253
162
|
- test/test_statement.rb
|
254
163
|
- test/test_types.rb
|
255
164
|
- test/test_util.rb
|
256
|
-
- test/
|
165
|
+
- test/testlib/rdbi-driver-stringhyphen.rb
|
166
|
+
- test/testlib/rdbi-driver-stringhyphencached.rb
|
167
|
+
- test/testlib/rdbi-driver-symbolhyphen.rb
|
168
|
+
- test/testlib/rdbi-driver-symbolhyphencached.rb
|
169
|
+
- test/testlib/rdbi/driver/stringsubdir.rb
|
170
|
+
- test/testlib/rdbi/driver/stringsubdircached.rb
|
171
|
+
- test/testlib/rdbi/driver/symbolsubdir.rb
|
172
|
+
- test/testlib/rdbi/driver/symbolsubdircached.rb
|
data/.gemtest
DELETED
File without changes
|