ydbi 0.5.0 → 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +4 -0
  3. data/build/Rakefile.dbi.rb +4 -4
  4. data/lib/dbi/version.rb +1 -1
  5. data/test/dbi/tc_dbi.rb +1 -1
  6. metadata +9 -124
  7. data/.gitignore +0 -6
  8. data/Gemfile +0 -4
  9. data/Rakefile +0 -8
  10. data/TODO +0 -44
  11. data/bench/bench.rb +0 -79
  12. data/build/rake_task_lib.rb +0 -187
  13. data/doc/DBD_SPEC.rdoc +0 -88
  14. data/doc/DBI_SPEC.rdoc +0 -157
  15. data/doc/homepage/contact.html +0 -62
  16. data/doc/homepage/development.html +0 -124
  17. data/doc/homepage/index.html +0 -83
  18. data/doc/homepage/ruby-dbi.css +0 -91
  19. data/lib/dbd/Mysql.rb +0 -137
  20. data/lib/dbd/ODBC.rb +0 -89
  21. data/lib/dbd/Pg.rb +0 -188
  22. data/lib/dbd/SQLite.rb +0 -97
  23. data/lib/dbd/SQLite3.rb +0 -124
  24. data/lib/dbd/mysql/database.rb +0 -405
  25. data/lib/dbd/mysql/driver.rb +0 -125
  26. data/lib/dbd/mysql/statement.rb +0 -188
  27. data/lib/dbd/odbc/database.rb +0 -128
  28. data/lib/dbd/odbc/driver.rb +0 -38
  29. data/lib/dbd/odbc/statement.rb +0 -137
  30. data/lib/dbd/pg/database.rb +0 -516
  31. data/lib/dbd/pg/exec.rb +0 -47
  32. data/lib/dbd/pg/statement.rb +0 -160
  33. data/lib/dbd/pg/tuples.rb +0 -121
  34. data/lib/dbd/pg/type.rb +0 -209
  35. data/lib/dbd/sqlite/database.rb +0 -151
  36. data/lib/dbd/sqlite/statement.rb +0 -125
  37. data/lib/dbd/sqlite3/database.rb +0 -201
  38. data/lib/dbd/sqlite3/statement.rb +0 -78
  39. data/prototypes/types2.rb +0 -237
  40. data/setup.rb +0 -1585
  41. data/test/DBD_TESTS +0 -50
  42. data/test/TESTING +0 -16
  43. data/test/dbd/general/test_database.rb +0 -206
  44. data/test/dbd/general/test_statement.rb +0 -326
  45. data/test/dbd/general/test_types.rb +0 -296
  46. data/test/dbd/mysql/base.rb +0 -26
  47. data/test/dbd/mysql/down.sql +0 -19
  48. data/test/dbd/mysql/test_blob.rb +0 -18
  49. data/test/dbd/mysql/test_new_methods.rb +0 -7
  50. data/test/dbd/mysql/test_patches.rb +0 -111
  51. data/test/dbd/mysql/up.sql +0 -28
  52. data/test/dbd/odbc/base.rb +0 -30
  53. data/test/dbd/odbc/down.sql +0 -19
  54. data/test/dbd/odbc/test_new_methods.rb +0 -12
  55. data/test/dbd/odbc/test_ping.rb +0 -10
  56. data/test/dbd/odbc/test_statement.rb +0 -44
  57. data/test/dbd/odbc/test_transactions.rb +0 -58
  58. data/test/dbd/odbc/up.sql +0 -33
  59. data/test/dbd/postgresql/base.rb +0 -31
  60. data/test/dbd/postgresql/down.sql +0 -31
  61. data/test/dbd/postgresql/test_arrays.rb +0 -179
  62. data/test/dbd/postgresql/test_async.rb +0 -121
  63. data/test/dbd/postgresql/test_blob.rb +0 -36
  64. data/test/dbd/postgresql/test_bytea.rb +0 -87
  65. data/test/dbd/postgresql/test_ping.rb +0 -10
  66. data/test/dbd/postgresql/test_timestamp.rb +0 -77
  67. data/test/dbd/postgresql/test_transactions.rb +0 -58
  68. data/test/dbd/postgresql/testdbipg.rb +0 -307
  69. data/test/dbd/postgresql/up.sql +0 -60
  70. data/test/dbd/sqlite/base.rb +0 -32
  71. data/test/dbd/sqlite/test_database.rb +0 -30
  72. data/test/dbd/sqlite/test_driver.rb +0 -68
  73. data/test/dbd/sqlite/test_statement.rb +0 -112
  74. data/test/dbd/sqlite/up.sql +0 -25
  75. data/test/dbd/sqlite3/base.rb +0 -32
  76. data/test/dbd/sqlite3/test_database.rb +0 -77
  77. data/test/dbd/sqlite3/test_driver.rb +0 -67
  78. data/test/dbd/sqlite3/test_statement.rb +0 -88
  79. data/test/dbd/sqlite3/up.sql +0 -33
  80. data/test/ts_dbd.rb +0 -131
  81. data/ydbi.gemspec +0 -24
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4196e9eba70c9b90fc275bafddb9850893f3bb85
4
- data.tar.gz: 3f5ac28115adf1f4ef6585abcc9c095015b4f38e
3
+ metadata.gz: 96278f2ffacb394c731259cdd8d911289a469c7e
4
+ data.tar.gz: a28f54844f574e215733065c95bb9298fa51a81c
5
5
  SHA512:
6
- metadata.gz: 41a72f31ae34d03e926313fb775280d92e7923b40720d97528fd307b11e126c21b844474ec52114a43c1c2c7f36e89b56621e7d406c09fc6ccbfabd732fce594
7
- data.tar.gz: 09615b92950041c56422ef20d50897c023d9e9b71f9e33306b9954d76a899a1576f457b62bbaabc81d2386ac7ee5fe0d5a103feeddf9a707d31b3e5001eb5ba6
6
+ metadata.gz: d14568a61f2978aab0410d29cfd8ac8e9b47d16c697e9d74ca6848b4c7cc6336fa7e230cbd5c6acb946ea9ebde6beb98927e8983a6ee160509ab1df216cb43cc
7
+ data.tar.gz: 4d4f435e9adcff9e6330914f15c58d4fa1bcae7ffa78c6a9684f46f3709a90e93f01df882bd3e8d919b5fb7dd056c2b37ff5eeec82c9f17913f222ffa537b9c7
data/ChangeLog CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.5.1 - 10/05/2016
2
+
3
+ * dbd-pg gem renamed to ydb-pg which requires gem 'ydbi'
4
+
1
5
  ## 0.5.0 - 10/05/2016
2
6
 
3
7
  * Gem renamed to ydbi. Some small changes to run under Ruby 2.x
@@ -32,19 +32,19 @@ build_dbi_tasks
32
32
  # There's probably a better way to do this, but here's a boilerplate spec that we dup and modify.
33
33
  #
34
34
 
35
- task :dbi => DEFAULT_TASKS.collect { |x| "dbi:#{x.to_s}" }
35
+ task :ydbi => DEFAULT_TASKS.collect { |x| "ydbi:#{x.to_s}" }
36
36
 
37
- namespace :dbi do
37
+ namespace :ydbi do
38
38
  code_files = %w(examples/**/* bin/dbi build/Rakefile.dbi.rb lib/dbi.rb lib/dbi/**/*.rb test/ts_dbi.rb test/dbi/*)
39
39
 
40
40
  spec = boilerplate_spec
41
- spec.name = 'dbi'
41
+ spec.name = 'ydbi'
42
42
  spec.version = DBI::VERSION
43
43
  spec.test_file = 'test/ts_dbi.rb'
44
44
  spec.executables = ['dbi', 'test_broken_dbi']
45
45
  spec.files = gem_files(code_files)
46
46
  spec.summary = 'A vendor independent interface for accessing databases, similar to Perl\'s DBI'
47
- spec.description = 'A vendor independent interface for accessing databases, similar to Perl\'s DBI'
47
+ spec.description = 'Branch by ywesee com, as our patches were never accepted by upstream'
48
48
  spec.add_dependency 'deprecated', '= 2.0.1'
49
49
 
50
50
  build_package_tasks(spec, code_files)
data/lib/dbi/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module DBI
2
- VERSION = "0.5.0"
2
+ VERSION = "0.5.1"
3
3
  end
data/test/dbi/tc_dbi.rb CHANGED
@@ -22,7 +22,7 @@ class TC_DBI < Test::Unit::TestCase
22
22
  end
23
23
 
24
24
  def test_dbi_version
25
- assert_equal("0.5.0", DBI::VERSION)
25
+ assert_equal("0.5.1", DBI::VERSION)
26
26
  end
27
27
 
28
28
  def test_dbd_module
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ydbi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erik Hollensbe
@@ -11,48 +11,6 @@ bindir: bin
11
11
  cert_chain: []
12
12
  date: 2016-05-10 00:00:00.000000000 Z
13
13
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: rake
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - ">="
19
- - !ruby/object:Gem::Version
20
- version: '0'
21
- type: :development
22
- prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- version: '0'
28
- - !ruby/object:Gem::Dependency
29
- name: minitest
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: '0'
35
- type: :development
36
- prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- version: '0'
42
- - !ruby/object:Gem::Dependency
43
- name: test-unit
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - ">="
47
- - !ruby/object:Gem::Version
48
- version: '0'
49
- type: :development
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- version: '0'
56
14
  - !ruby/object:Gem::Dependency
57
15
  name: deprecated
58
16
  requirement: !ruby/object:Gem::Requirement
@@ -68,53 +26,24 @@ dependencies:
68
26
  - !ruby/object:Gem::Version
69
27
  version: 2.0.1
70
28
  description: Branch by ywesee com, as our patches were never accepted by upstream
71
- email: ruby-dbi-users@rubyforge.org
29
+ email: zdavatz@ywesee.com
72
30
  executables:
73
31
  - dbi
74
32
  - test_broken_dbi
75
33
  extensions: []
76
- extra_rdoc_files: []
34
+ extra_rdoc_files:
35
+ - readme.md
36
+ - LICENSE
37
+ - ChangeLog
77
38
  files:
78
- - ".gitignore"
79
39
  - ChangeLog
80
- - Gemfile
81
40
  - LICENSE
82
- - Rakefile
83
- - TODO
84
- - bench/bench.rb
85
41
  - bin/dbi
86
42
  - bin/test_broken_dbi
87
43
  - build/Rakefile.dbi.rb
88
- - build/rake_task_lib.rb
89
- - doc/DBD_SPEC.rdoc
90
- - doc/DBI_SPEC.rdoc
91
- - doc/homepage/contact.html
92
- - doc/homepage/development.html
93
- - doc/homepage/index.html
94
- - doc/homepage/ruby-dbi.css
95
44
  - examples/test1.pl
96
45
  - examples/test1.rb
97
46
  - examples/xmltest.rb
98
- - lib/dbd/Mysql.rb
99
- - lib/dbd/ODBC.rb
100
- - lib/dbd/Pg.rb
101
- - lib/dbd/SQLite.rb
102
- - lib/dbd/SQLite3.rb
103
- - lib/dbd/mysql/database.rb
104
- - lib/dbd/mysql/driver.rb
105
- - lib/dbd/mysql/statement.rb
106
- - lib/dbd/odbc/database.rb
107
- - lib/dbd/odbc/driver.rb
108
- - lib/dbd/odbc/statement.rb
109
- - lib/dbd/pg/database.rb
110
- - lib/dbd/pg/exec.rb
111
- - lib/dbd/pg/statement.rb
112
- - lib/dbd/pg/tuples.rb
113
- - lib/dbd/pg/type.rb
114
- - lib/dbd/sqlite/database.rb
115
- - lib/dbd/sqlite/statement.rb
116
- - lib/dbd/sqlite3/database.rb
117
- - lib/dbd/sqlite3/statement.rb
118
47
  - lib/dbi.rb
119
48
  - lib/dbi/base_classes.rb
120
49
  - lib/dbi/base_classes/database.rb
@@ -141,48 +70,7 @@ files:
141
70
  - lib/dbi/utils/timestamp.rb
142
71
  - lib/dbi/utils/xmlformatter.rb
143
72
  - lib/dbi/version.rb
144
- - prototypes/types2.rb
145
73
  - readme.md
146
- - setup.rb
147
- - test/DBD_TESTS
148
- - test/TESTING
149
- - test/dbd/general/test_database.rb
150
- - test/dbd/general/test_statement.rb
151
- - test/dbd/general/test_types.rb
152
- - test/dbd/mysql/base.rb
153
- - test/dbd/mysql/down.sql
154
- - test/dbd/mysql/test_blob.rb
155
- - test/dbd/mysql/test_new_methods.rb
156
- - test/dbd/mysql/test_patches.rb
157
- - test/dbd/mysql/up.sql
158
- - test/dbd/odbc/base.rb
159
- - test/dbd/odbc/down.sql
160
- - test/dbd/odbc/test_new_methods.rb
161
- - test/dbd/odbc/test_ping.rb
162
- - test/dbd/odbc/test_statement.rb
163
- - test/dbd/odbc/test_transactions.rb
164
- - test/dbd/odbc/up.sql
165
- - test/dbd/postgresql/base.rb
166
- - test/dbd/postgresql/down.sql
167
- - test/dbd/postgresql/test_arrays.rb
168
- - test/dbd/postgresql/test_async.rb
169
- - test/dbd/postgresql/test_blob.rb
170
- - test/dbd/postgresql/test_bytea.rb
171
- - test/dbd/postgresql/test_ping.rb
172
- - test/dbd/postgresql/test_timestamp.rb
173
- - test/dbd/postgresql/test_transactions.rb
174
- - test/dbd/postgresql/testdbipg.rb
175
- - test/dbd/postgresql/up.sql
176
- - test/dbd/sqlite/base.rb
177
- - test/dbd/sqlite/test_database.rb
178
- - test/dbd/sqlite/test_driver.rb
179
- - test/dbd/sqlite/test_statement.rb
180
- - test/dbd/sqlite/up.sql
181
- - test/dbd/sqlite3/base.rb
182
- - test/dbd/sqlite3/test_database.rb
183
- - test/dbd/sqlite3/test_driver.rb
184
- - test/dbd/sqlite3/test_statement.rb
185
- - test/dbd/sqlite3/up.sql
186
74
  - test/dbi/tc_columninfo.rb
187
75
  - test/dbi/tc_date.rb
188
76
  - test/dbi/tc_dbi.rb
@@ -192,10 +80,8 @@ files:
192
80
  - test/dbi/tc_time.rb
193
81
  - test/dbi/tc_timestamp.rb
194
82
  - test/dbi/tc_types.rb
195
- - test/ts_dbd.rb
196
83
  - test/ts_dbi.rb
197
- - ydbi.gemspec
198
- homepage: http://www.rubyforge.org/projects/ruby-dbi
84
+ homepage: https://github.com/zdavatz/ydbi
199
85
  licenses: []
200
86
  metadata: {}
201
87
  post_install_message:
@@ -206,14 +92,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
206
92
  requirements:
207
93
  - - ">="
208
94
  - !ruby/object:Gem::Version
209
- version: '0'
95
+ version: 1.8.0
210
96
  required_rubygems_version: !ruby/object:Gem::Requirement
211
97
  requirements:
212
98
  - - ">="
213
99
  - !ruby/object:Gem::Version
214
100
  version: '0'
215
101
  requirements: []
216
- rubyforge_project:
102
+ rubyforge_project: ydbi
217
103
  rubygems_version: 2.4.5
218
104
  signing_key:
219
105
  specification_version: 4
@@ -221,4 +107,3 @@ summary: A vendor independent interface for accessing databases, similar to Perl
221
107
  DBI
222
108
  test_files:
223
109
  - test/ts_dbi.rb
224
- has_rdoc: true
data/.gitignore DELETED
@@ -1,6 +0,0 @@
1
- vendor/
2
- coverage/
3
- pkg/
4
- .bundle
5
- .ruby-version
6
- Gemfile.lock
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- # A sample Gemfile
2
- source "https://rubygems.org"
3
-
4
- gemspec
data/Rakefile DELETED
@@ -1,8 +0,0 @@
1
- require "bundler/gem_tasks"
2
-
3
- # dependencies are now declared in ydim.gemspec
4
- desc 'Offer a gem task like hoe'
5
- task :gem => :build do
6
- Rake::Task[:build].invoke
7
- end
8
-
data/TODO DELETED
@@ -1,44 +0,0 @@
1
- 0.4.0:
2
- x Work
3
- x Postgres quoting toggles
4
- x Postgres binding toggles
5
- x Test for #20489
6
- * Release checklist:
7
- x Update ChangeLog
8
- x rake
9
- x remove all related gems, install all DBI/DBD gems (check prereqs)
10
- x write a few test scripts to make sure drivers are loading
11
- x Update homepage (irc channel, git, other changes)
12
- * tag as 0.4.0
13
- * upload rdoc
14
- * upload packages
15
- * release announcement (rf, ruby-talk, dbi lists, other places?)
16
- * rebase master from development
17
- * BEER
18
- 0.6.0:
19
- * Cleanup:
20
- * Arrays:
21
- * Find some way to get the extents of an array type
22
- * checked pg_type, pg_attribute and pg_class, can't find anything.
23
- * I don't think this is possible, but let's slate it for 0.6.0 anyways.
24
- * Tracing
25
- * WTH do we want to do with this
26
- * Wow, this module has *serious issues*. Crashes DBI without warning. Redo this completely.
27
- * 0.6.0
28
- * Re-institute drivers
29
- * Proxy
30
- * Slated for 0.6.0
31
- * Finish type management system
32
- * Unify ColumnInfo
33
- * Should we enforce ColumnInfo requirements at the DBI level?
34
- * At least test the result of statement colinfo uniformly
35
- * 0.6.0
36
- * Cleanup core
37
- * Require code is a mess
38
- * Just remove the case-sensitivity from the DBDs in general
39
- * 0.6.0
40
- * Find a good clean way to enumerate drivers in separate gems
41
- * Some registration-on-require would be cleaner and safer
42
- * 0.6.0
43
- * Scripts
44
- * bin/dbd_proxy seems to have never worked; slate it for 0.6.0
data/bench/bench.rb DELETED
@@ -1,79 +0,0 @@
1
- require 'rubygems'
2
- $:.unshift File.dirname(__FILE__) + '/../lib'
3
- require 'dbi'
4
-
5
- class DbiBenchmark
6
- attr_reader :db
7
-
8
- def initialize db, quiet=false
9
- @db = db
10
- @quiet = quiet
11
- end
12
-
13
- def puts(*args)
14
- super unless @quiet
15
- end
16
-
17
- def run
18
- times = {}
19
- %w[create_test_table selecting_floats selecting_datetimes].each do |name|
20
- t = Time.now
21
- puts "* #{name.tr('_', ' ').capitalize}"
22
- send name
23
- took = Time.now - t
24
- puts " (took #{took} seconds)"
25
- puts
26
- times[name] = took
27
- end
28
- times
29
- ensure
30
- db.do 'drop table data'
31
- end
32
-
33
- def create_test_table
34
- db.do <<-end
35
- create table data (
36
- date timestamp,
37
- value float
38
- )
39
- end
40
- db.do 'begin'
41
- today = Date.today
42
- 5_000.times do
43
- db.do "insert into data values ('#{today + rand(100) - 50}', #{10 + rand * 30})"
44
- end
45
- db.do 'commit'
46
- end
47
-
48
- def selecting_floats
49
- strs = db.select_all('select value from data').map { |v| v.to_s }
50
- puts *strs[0, 5]
51
- puts '...'
52
- end
53
-
54
- def selecting_datetimes
55
- strs = db.select_all('select date from data').map { |v| v.to_s }
56
- puts *strs[0, 5]
57
- puts '...'
58
- end
59
- end
60
-
61
- def bench
62
- dbiurls = [
63
- 'DBI:Mysql:dbitest:localhost',
64
- 'DBI:ODBC:MYDBITEST',
65
- 'DBI:Pg:dbitest:localhost',
66
- 'DBI:ODBC:PGDBITEST',
67
- ]
68
- order = %w[create_test_table selecting_floats selecting_datetimes]
69
- dbiurls.map do |url|
70
- # assume all dbs have the same credentials
71
- DBI.connect(url, *ARGV) do |db|
72
- [url.first.sub('DBI:', ''), *DbiBenchmark.new(db, true).run.values_at(*order)]
73
- end
74
- end
75
- end
76
-
77
- puts 'Running benchmark:'
78
- DBI::Utils::TableFormatter.ascii(%w[db insert float datetime], bench, nil, nil, nil, nil, 30)
79
-
@@ -1,187 +0,0 @@
1
- $:.unshift 'lib'
2
- require 'rake'
3
- require 'rubygems'
4
- require 'rubygems/package_task'
5
- require 'rake/packagetask'
6
- require 'rdoc/task'
7
-
8
-
9
- DEFAULT_TASKS = [:clobber_package, :package, :gem]
10
-
11
- DBD_GEM_DEP_MAP = {
12
- 'pg' => 'pg',
13
- 'mysql' => 'mysql',
14
- 'sqlite' => 'sqlite-ruby',
15
- 'sqlite3' => 'sqlite3-ruby'
16
- }
17
-
18
- #
19
- # Packaging
20
- #
21
-
22
- PACKAGE_FILES = %w(Rakefile build/rake_task_lib.rb setup.rb)
23
- DOC_FILES = %w(readme.md LICENSE ChangeLog)
24
- EXCLUSIONS = %w(test/sql.log)
25
- DBD_FILES = %w(test/DBD_TESTS)
26
-
27
- #
28
- # some inlines
29
- #
30
-
31
- def gem_files(code_files)
32
- (code_files + DOC_FILES).collect { |x| Dir[x] }.reject { |x| EXCLUSIONS.include? x }.flatten
33
- end
34
-
35
- def package_files(code_files)
36
- code_files + DOC_FILES + PACKAGE_FILES
37
- end
38
-
39
- def build_package_tasks(spec, code_files)
40
- Gem::PackageTask.new(spec) do |s|
41
- end
42
-
43
- Rake::PackageTask.new(spec.name, spec.version) do |p|
44
- p.need_tar_gz = true
45
- p.need_zip = true
46
-
47
- package_files(code_files).each do |x|
48
- p.package_files.include(x)
49
- end
50
-
51
- EXCLUSIONS.each do |x|
52
- p.package_files.exclude(x)
53
- end
54
- end
55
- end
56
-
57
- def boilerplate_spec
58
- gem = Gem::Specification.new
59
- gem.authors = ['Erik Hollensbe', 'Christopher Maujean']
60
- gem.email = 'ruby-dbi-users@rubyforge.org'
61
- gem.homepage = 'http://www.rubyforge.org/projects/ruby-dbi'
62
- gem.platform = Gem::Platform::RUBY
63
- gem.has_rdoc = true
64
- gem.extra_rdoc_files = DOC_FILES
65
- gem.required_ruby_version = '>= 1.8.0'
66
- gem.rubyforge_project = 'ruby-dbi'
67
- return gem
68
- end
69
-
70
- # builds a dbd namespace from the DBD_PACKAGES hash
71
- def dbd_namespace(dbd)
72
- "dbd-" + dbd.to_s.downcase
73
- end
74
-
75
- def dbd_code_files(dbd)
76
- code_files = [
77
- "test/dbd/general/**",
78
- File.join("test", "dbd", dbd.downcase == "pg" ? "postgresql" : dbd.downcase, "*"),
79
- File.join("lib", "dbd", dbd + ".rb"),
80
- "lib/dbd/#{dbd.downcase}/*.rb",
81
- ] + DBD_FILES
82
- end
83
-
84
- def dbd_gem_files(code_files)
85
- DBD_FILES + gem_files(code_files)
86
- end
87
-
88
- def dbd_package_files(code_files)
89
- DBD_FILES + package_files(code_files)
90
- end
91
-
92
- def dbd_gem_spec(dbd, dbd_const, code_files)
93
- spec = boilerplate_spec
94
- spec.name = dbd_namespace(dbd)
95
- spec.version = dbd_version(dbd_const)
96
- spec.test_file = 'test/ts_dbd.rb'
97
- spec.files = gem_files(code_files)
98
- spec.summary = dbd_description(dbd_const)
99
- spec.description = dbd_description(dbd_const)
100
- spec.add_dependency 'dbi', '>= 0.4.0'
101
-
102
- dcdbd = dbd.downcase
103
-
104
- if DBD_GEM_DEP_MAP[dcdbd]
105
- spec.add_dependency DBD_GEM_DEP_MAP[dcdbd]
106
- end
107
-
108
- return spec
109
- end
110
-
111
- def dbd_version(const)
112
- DBI::DBD.const_get(const).const_get("VERSION")
113
- end
114
-
115
- def dbd_description(const)
116
- DBI::DBD.const_get(const).const_get("DESCRIPTION")
117
- end
118
-
119
-
120
- def build_dbd_tasks(dbd)
121
- task :default => DEFAULT_TASKS
122
-
123
- begin
124
- done = false
125
- dbd_const = nil
126
- Dir["lib/dbd/*.rb"].each do |dbd_file|
127
- if File.basename(dbd_file.downcase, '.rb') == dbd.to_s.downcase
128
- dbd_const = File.basename(dbd_file, '.rb')
129
- require "dbd/#{dbd_const}"
130
- done = true
131
- end
132
- end
133
-
134
- abort "No DBD found even though we asked to make tasks for it" unless done
135
-
136
- code_files = dbd_code_files(dbd_const)
137
-
138
- spec = dbd_gem_spec(dbd, dbd_const, code_files)
139
-
140
- build_package_tasks(spec, code_files)
141
-
142
- # FIXME: convert to a rake_test_loader sooner or later
143
- task :test do
144
- ENV["DBTYPES"] = dbd
145
- ruby "test/ts_dbd.rb"
146
- end
147
- rescue LoadError => e
148
- DEFAULT_TASKS.each do |x|
149
- task x do
150
- end
151
- end
152
- warn "Skipping #{dbd_namespace(dbd)} because we can't require DBD"
153
- end
154
- end
155
-
156
- def build_dbi_tasks
157
- end
158
-
159
- #
160
- # basic tasks
161
- #
162
-
163
- task :dist => [:distclean, :package, :rdoc]
164
- task :distclean => [:clobber_package, :clobber_rdoc]
165
- task :clean => [:distclean]
166
- task :default => [:test, :dist]
167
-
168
- task :to_blog => [:clobber_rdoc, :rdoc] do
169
- sh "rm -r $git/blog/content/docs/ruby-dbi && mv rdoc $git/blog/content/docs/ruby-dbi"
170
- end
171
-
172
- #
173
- # Documentation
174
- #
175
-
176
- RDoc::Task.new do |rd|
177
- rd.rdoc_dir = "rdoc"
178
- rd.main = "README"
179
- rd.rdoc_files.include("./README")
180
- rd.rdoc_files.include("./ChangeLog")
181
- rd.rdoc_files.include("./LICENSE")
182
- rd.rdoc_files.include("./doc/**/*.rdoc")
183
- rd.rdoc_files.include("./lib/**/*.rb")
184
- rd.rdoc_files.include("./ext/**/*.c")
185
- rd.options = %w(-a)
186
- end
187
-
data/doc/DBD_SPEC.rdoc DELETED
@@ -1,88 +0,0 @@
1
- = DBD Specification Version 0.4.0
2
- By Erik Hollensbe <erik@hollensbe.org>
3
-
4
- == FOREWORD
5
-
6
- DBI is still in a large state of flux. Previous versions of this
7
- specification rarely reflected reality, and the 0.4.0 release is an
8
- attempt to get the code and documentation in touch with each other to
9
- better reflect said reality.
10
-
11
- While this is a goal, nobody's perfect and there is still a lot of
12
- code to check, sanitize, and otherwise clean up. If you find something
13
- missing in these specifications while working on a new DBD or a patch
14
- for DBI, please, do not do what everything else is doing; alert the
15
- appropriate person to get the spec revised. Doing this will save
16
- yourself (and the DBI authors) infinite amounts of time.
17
-
18
- == WHAT A DBD IS
19
-
20
- DBD stands for "DataBase Driver" and is the layer that DBI uses to interface
21
- with the database. DBDs often employ a low level driver to do the real work
22
- with the database, leaving the DBD itself to act as a medium between DBI and
23
- that lower level API.
24
-
25
- This allows a great deal of flexibility without having to sacrifice features
26
- for compatibility. For example, instead of having one PostgreSQL DBD that
27
- handles all version of PostgreSQL and attempts to limit it's functionality
28
- based on what version it detects (a error-prone and time/design prohibitive
29
- process), one can write two PostgreSQL DBD that handle the differences between
30
- "new" and "old" postgres, all while talking to the same low-level driver (yet
31
- leveraging different functionality). This method leads to cleaner internals and
32
- puts the choice of which to use on the end-user, who is probably a lot more
33
- informed about what features they want than your code.
34
-
35
- One traditionally loads a DBD using the DBI.connect method (see DBD LOAD
36
- PATHS below) which will attempt to load the DBD, connect to the database with
37
- the arguments supplied and return a DatabaseHandle if successful. However, if
38
- the DBD is written properly, requiring it directly without DBI's involvement
39
- (or existence) should not be an issue.
40
-
41
- == WHERE DBDs LIVE
42
-
43
- DBDs have an expected require path to be loaded by DBI. DBI will attempt to
44
- load the middle portion of the DBI.connect DSN provided.
45
-
46
- Example: DBI.connect("dbi:Mysql:mydb") # requires 'dbd/Mysql'
47
-
48
- Since rubygems potentially renders this path virtual, it is not OK to expect
49
- this path physically exists in one spot on the filesystem. Many assuptions are
50
- currently made about this and will be pruned in 0.6.0.
51
-
52
- If you wish to create submodules for your DBD, create a directory in the 'dbd'
53
- directory named the same as the DBD. (E.g., "dbd/Mysql" would have a directory
54
- with files in it relating to the Mysql.rb file that DBI loads).
55
-
56
- == HOW DBI INTERFACES WITH YOUR DBD
57
-
58
- Your DBD will create classes representing a DBI::BaseDriver, DBI::BaseDatabase,
59
- and DBI::BaseStatement. DBI will link these to DBI::DriverHandle,
60
- DBI::DatabaseHandle, and DBI::StatementHandle respectively. Your classes will
61
- be called by the Handle classes to retreive information to manipulate and send
62
- to the user. This manipulation can be influenced in a number of ways.
63
-
64
- It is strongly recommended you make the effort to read the RDoc for all six
65
- of these classes, as they are the meat of this specification, not this
66
- document.
67
-
68
- == BUILDING A DBD FROM SCRATCH
69
-
70
- For the purposes of this discussion, we'll call your driver 'Foo'.
71
-
72
- Create your module, DBI::DBD::Foo. Store it somewhere in your load path under
73
- dbd/Foo.rb.
74
-
75
- Create classes Driver, Database, and Statement in this new namespace, which
76
- inherit from DBI::BaseDriver, DBI::BaseDatabase, and DBI::BaseStatement.
77
- Override (at mininum) the methods that return NotImplementedError in your new
78
- classes.
79
-
80
- Create a method in the root namespace named +driver_name+. This should return a
81
- string with a short name for your driver, this key will be used in type
82
- conversion.
83
-
84
- Everything else is up to you, up to and including worrying about interacting
85
- with the database.
86
-
87
- At this point, you should be ready to test your driver. See test/DBD_TESTS for
88
- information on how to configure that.