ydbi 0.5.7 → 0.5.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/ChangeLog +4 -0
- data/lib/dbi/version.rb +1 -1
- data/readme.md +4 -3
- data/test/dbi/tc_dbi.rb +1 -1
- metadata +7 -125
- data/.github/workflows/ruby.yml +0 -35
- data/.gitignore +0 -8
- data/.travis.yml +0 -15
- data/Gemfile +0 -5
- data/Rakefile +0 -10
- data/TODO +0 -44
- data/bench/bench.rb +0 -79
- data/build/rake_task_lib.rb +0 -186
- data/doc/DBD_SPEC.rdoc +0 -88
- data/doc/DBI_SPEC.rdoc +0 -157
- data/doc/homepage/contact.html +0 -62
- data/doc/homepage/development.html +0 -124
- data/doc/homepage/index.html +0 -83
- data/doc/homepage/ruby-dbi.css +0 -91
- data/lib/dbd/Mysql.rb +0 -137
- data/lib/dbd/ODBC.rb +0 -89
- data/lib/dbd/Pg.rb +0 -188
- data/lib/dbd/SQLite.rb +0 -97
- data/lib/dbd/SQLite3.rb +0 -124
- data/lib/dbd/mysql/database.rb +0 -405
- data/lib/dbd/mysql/driver.rb +0 -125
- data/lib/dbd/mysql/statement.rb +0 -188
- data/lib/dbd/odbc/database.rb +0 -128
- data/lib/dbd/odbc/driver.rb +0 -38
- data/lib/dbd/odbc/statement.rb +0 -137
- data/lib/dbd/pg/database.rb +0 -504
- data/lib/dbd/pg/exec.rb +0 -47
- data/lib/dbd/pg/statement.rb +0 -160
- data/lib/dbd/pg/tuples.rb +0 -121
- data/lib/dbd/pg/type.rb +0 -209
- data/lib/dbd/sqlite/database.rb +0 -151
- data/lib/dbd/sqlite/statement.rb +0 -125
- data/lib/dbd/sqlite3/database.rb +0 -201
- data/lib/dbd/sqlite3/statement.rb +0 -78
- data/prototypes/types2.rb +0 -237
- data/setup.rb +0 -1585
- data/test/DBD_TESTS +0 -50
- data/test/TESTING +0 -16
- data/test/dbd/general/test_database.rb +0 -206
- data/test/dbd/general/test_statement.rb +0 -326
- data/test/dbd/general/test_types.rb +0 -296
- data/test/dbd/mysql/base.rb +0 -26
- data/test/dbd/mysql/down.sql +0 -19
- data/test/dbd/mysql/test_blob.rb +0 -18
- data/test/dbd/mysql/test_new_methods.rb +0 -7
- data/test/dbd/mysql/test_patches.rb +0 -111
- data/test/dbd/mysql/up.sql +0 -28
- data/test/dbd/odbc/base.rb +0 -30
- data/test/dbd/odbc/down.sql +0 -19
- data/test/dbd/odbc/test_new_methods.rb +0 -12
- data/test/dbd/odbc/test_ping.rb +0 -10
- data/test/dbd/odbc/test_statement.rb +0 -44
- data/test/dbd/odbc/test_transactions.rb +0 -58
- data/test/dbd/odbc/up.sql +0 -33
- data/test/dbd/postgresql/base.rb +0 -31
- data/test/dbd/postgresql/down.sql +0 -31
- data/test/dbd/postgresql/test_arrays.rb +0 -179
- data/test/dbd/postgresql/test_async.rb +0 -121
- data/test/dbd/postgresql/test_blob.rb +0 -36
- data/test/dbd/postgresql/test_bytea.rb +0 -87
- data/test/dbd/postgresql/test_ping.rb +0 -10
- data/test/dbd/postgresql/test_timestamp.rb +0 -77
- data/test/dbd/postgresql/test_transactions.rb +0 -58
- data/test/dbd/postgresql/testdbipg.rb +0 -307
- data/test/dbd/postgresql/up.sql +0 -60
- data/test/dbd/sqlite/base.rb +0 -32
- data/test/dbd/sqlite/test_database.rb +0 -30
- data/test/dbd/sqlite/test_driver.rb +0 -68
- data/test/dbd/sqlite/test_statement.rb +0 -112
- data/test/dbd/sqlite/up.sql +0 -25
- data/test/dbd/sqlite3/base.rb +0 -32
- data/test/dbd/sqlite3/test_database.rb +0 -77
- data/test/dbd/sqlite3/test_driver.rb +0 -67
- data/test/dbd/sqlite3/test_statement.rb +0 -88
- data/test/dbd/sqlite3/up.sql +0 -33
- data/test/ts_dbd.rb +0 -131
- data/ydbi.gemspec +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 62f01549856766688a97c7b0978a288de3036664ada7ada30004210f3d59204e
|
4
|
+
data.tar.gz: 035ef8999addc9d27a10d2e51ccf7390c4aac40227d3273a93e5b4d0c0079cba
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d863b375ab55be7eaa5556427fce403e0cfb7197daa9dd7b997af1bf1e1ef920d383ff5ccdd5bbcacf63373b4466ef2a3722398175d949ad80be8f2f12aab44a
|
7
|
+
data.tar.gz: 11a57ae2353ff07445bf79e3a770023387284cf8883dafda2087b8e466fbbe6a2184d6aece6a4ee097cefb53aeff6849cfb12ae6e9062a85dedb9621f3e4bf85
|
data/ChangeLog
CHANGED
data/lib/dbi/version.rb
CHANGED
data/readme.md
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
# Release a new ydbi gem
|
2
2
|
|
3
|
-
*
|
4
|
-
*
|
5
|
-
* gem push
|
3
|
+
* bundle exec rake test test_dbd test_dbi
|
4
|
+
* rake ydbd-pg:clobber_package; rake ydbd-pg:clobber_package; rake ydbi:gem ydbd-pg:gem
|
5
|
+
* bundle exec gem push pkg/ydbd-*.gem
|
6
|
+
* bundle exec gem push pkg/ydbi-*.gem
|
6
7
|
|
7
8
|
# Description
|
8
9
|
The DBI package is a vendor independent interface for accessing databases.
|
data/test/dbi/tc_dbi.rb
CHANGED
metadata
CHANGED
@@ -1,60 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ydbi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Erik Hollensbe
|
8
8
|
- Christopher Maujean
|
9
|
-
- Niklaus Giger
|
10
|
-
- Zeno Davatz
|
11
9
|
autorequire:
|
12
10
|
bindir: bin
|
13
11
|
cert_chain: []
|
14
|
-
date: 2021-
|
12
|
+
date: 2021-03-11 00:00:00.000000000 Z
|
15
13
|
dependencies:
|
16
|
-
- !ruby/object:Gem::Dependency
|
17
|
-
name: pg
|
18
|
-
requirement: !ruby/object:Gem::Requirement
|
19
|
-
requirements:
|
20
|
-
- - ">="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 1.0.0
|
23
|
-
type: :runtime
|
24
|
-
prerelease: false
|
25
|
-
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
requirements:
|
27
|
-
- - ">="
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: 1.0.0
|
30
|
-
- !ruby/object:Gem::Dependency
|
31
|
-
name: rake
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
-
requirements:
|
34
|
-
- - ">="
|
35
|
-
- !ruby/object:Gem::Version
|
36
|
-
version: '0'
|
37
|
-
type: :development
|
38
|
-
prerelease: false
|
39
|
-
version_requirements: !ruby/object:Gem::Requirement
|
40
|
-
requirements:
|
41
|
-
- - ">="
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
version: '0'
|
44
|
-
- !ruby/object:Gem::Dependency
|
45
|
-
name: test-unit
|
46
|
-
requirement: !ruby/object:Gem::Requirement
|
47
|
-
requirements:
|
48
|
-
- - ">="
|
49
|
-
- !ruby/object:Gem::Version
|
50
|
-
version: '0'
|
51
|
-
type: :development
|
52
|
-
prerelease: false
|
53
|
-
version_requirements: !ruby/object:Gem::Requirement
|
54
|
-
requirements:
|
55
|
-
- - ">="
|
56
|
-
- !ruby/object:Gem::Version
|
57
|
-
version: '0'
|
58
14
|
- !ruby/object:Gem::Dependency
|
59
15
|
name: deprecated
|
60
16
|
requirement: !ruby/object:Gem::Requirement
|
@@ -75,50 +31,19 @@ executables:
|
|
75
31
|
- dbi
|
76
32
|
- test_broken_dbi
|
77
33
|
extensions: []
|
78
|
-
extra_rdoc_files:
|
34
|
+
extra_rdoc_files:
|
35
|
+
- readme.md
|
36
|
+
- LICENSE
|
37
|
+
- ChangeLog
|
79
38
|
files:
|
80
|
-
- ".github/workflows/ruby.yml"
|
81
|
-
- ".gitignore"
|
82
|
-
- ".travis.yml"
|
83
39
|
- ChangeLog
|
84
|
-
- Gemfile
|
85
40
|
- LICENSE
|
86
|
-
- Rakefile
|
87
|
-
- TODO
|
88
|
-
- bench/bench.rb
|
89
41
|
- bin/dbi
|
90
42
|
- bin/test_broken_dbi
|
91
43
|
- build/Rakefile.dbi.rb
|
92
|
-
- build/rake_task_lib.rb
|
93
|
-
- doc/DBD_SPEC.rdoc
|
94
|
-
- doc/DBI_SPEC.rdoc
|
95
|
-
- doc/homepage/contact.html
|
96
|
-
- doc/homepage/development.html
|
97
|
-
- doc/homepage/index.html
|
98
|
-
- doc/homepage/ruby-dbi.css
|
99
44
|
- examples/test1.pl
|
100
45
|
- examples/test1.rb
|
101
46
|
- examples/xmltest.rb
|
102
|
-
- lib/dbd/Mysql.rb
|
103
|
-
- lib/dbd/ODBC.rb
|
104
|
-
- lib/dbd/Pg.rb
|
105
|
-
- lib/dbd/SQLite.rb
|
106
|
-
- lib/dbd/SQLite3.rb
|
107
|
-
- lib/dbd/mysql/database.rb
|
108
|
-
- lib/dbd/mysql/driver.rb
|
109
|
-
- lib/dbd/mysql/statement.rb
|
110
|
-
- lib/dbd/odbc/database.rb
|
111
|
-
- lib/dbd/odbc/driver.rb
|
112
|
-
- lib/dbd/odbc/statement.rb
|
113
|
-
- lib/dbd/pg/database.rb
|
114
|
-
- lib/dbd/pg/exec.rb
|
115
|
-
- lib/dbd/pg/statement.rb
|
116
|
-
- lib/dbd/pg/tuples.rb
|
117
|
-
- lib/dbd/pg/type.rb
|
118
|
-
- lib/dbd/sqlite/database.rb
|
119
|
-
- lib/dbd/sqlite/statement.rb
|
120
|
-
- lib/dbd/sqlite3/database.rb
|
121
|
-
- lib/dbd/sqlite3/statement.rb
|
122
47
|
- lib/dbi.rb
|
123
48
|
- lib/dbi/base_classes.rb
|
124
49
|
- lib/dbi/base_classes/database.rb
|
@@ -145,48 +70,7 @@ files:
|
|
145
70
|
- lib/dbi/utils/timestamp.rb
|
146
71
|
- lib/dbi/utils/xmlformatter.rb
|
147
72
|
- lib/dbi/version.rb
|
148
|
-
- prototypes/types2.rb
|
149
73
|
- readme.md
|
150
|
-
- setup.rb
|
151
|
-
- test/DBD_TESTS
|
152
|
-
- test/TESTING
|
153
|
-
- test/dbd/general/test_database.rb
|
154
|
-
- test/dbd/general/test_statement.rb
|
155
|
-
- test/dbd/general/test_types.rb
|
156
|
-
- test/dbd/mysql/base.rb
|
157
|
-
- test/dbd/mysql/down.sql
|
158
|
-
- test/dbd/mysql/test_blob.rb
|
159
|
-
- test/dbd/mysql/test_new_methods.rb
|
160
|
-
- test/dbd/mysql/test_patches.rb
|
161
|
-
- test/dbd/mysql/up.sql
|
162
|
-
- test/dbd/odbc/base.rb
|
163
|
-
- test/dbd/odbc/down.sql
|
164
|
-
- test/dbd/odbc/test_new_methods.rb
|
165
|
-
- test/dbd/odbc/test_ping.rb
|
166
|
-
- test/dbd/odbc/test_statement.rb
|
167
|
-
- test/dbd/odbc/test_transactions.rb
|
168
|
-
- test/dbd/odbc/up.sql
|
169
|
-
- test/dbd/postgresql/base.rb
|
170
|
-
- test/dbd/postgresql/down.sql
|
171
|
-
- test/dbd/postgresql/test_arrays.rb
|
172
|
-
- test/dbd/postgresql/test_async.rb
|
173
|
-
- test/dbd/postgresql/test_blob.rb
|
174
|
-
- test/dbd/postgresql/test_bytea.rb
|
175
|
-
- test/dbd/postgresql/test_ping.rb
|
176
|
-
- test/dbd/postgresql/test_timestamp.rb
|
177
|
-
- test/dbd/postgresql/test_transactions.rb
|
178
|
-
- test/dbd/postgresql/testdbipg.rb
|
179
|
-
- test/dbd/postgresql/up.sql
|
180
|
-
- test/dbd/sqlite/base.rb
|
181
|
-
- test/dbd/sqlite/test_database.rb
|
182
|
-
- test/dbd/sqlite/test_driver.rb
|
183
|
-
- test/dbd/sqlite/test_statement.rb
|
184
|
-
- test/dbd/sqlite/up.sql
|
185
|
-
- test/dbd/sqlite3/base.rb
|
186
|
-
- test/dbd/sqlite3/test_database.rb
|
187
|
-
- test/dbd/sqlite3/test_driver.rb
|
188
|
-
- test/dbd/sqlite3/test_statement.rb
|
189
|
-
- test/dbd/sqlite3/up.sql
|
190
74
|
- test/dbi/tc_columninfo.rb
|
191
75
|
- test/dbi/tc_date.rb
|
192
76
|
- test/dbi/tc_dbi.rb
|
@@ -196,9 +80,7 @@ files:
|
|
196
80
|
- test/dbi/tc_time.rb
|
197
81
|
- test/dbi/tc_timestamp.rb
|
198
82
|
- test/dbi/tc_types.rb
|
199
|
-
- test/ts_dbd.rb
|
200
83
|
- test/ts_dbi.rb
|
201
|
-
- ydbi.gemspec
|
202
84
|
homepage: https://github.com/zdavatz/ydbi
|
203
85
|
licenses:
|
204
86
|
- MIT
|
@@ -211,7 +93,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
211
93
|
requirements:
|
212
94
|
- - ">="
|
213
95
|
- !ruby/object:Gem::Version
|
214
|
-
version:
|
96
|
+
version: 1.8.0
|
215
97
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
216
98
|
requirements:
|
217
99
|
- - ">="
|
data/.github/workflows/ruby.yml
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
# This workflow uses actions that are not certified by GitHub.
|
2
|
-
# They are provided by a third-party and are governed by
|
3
|
-
# separate terms of service, privacy policy, and support
|
4
|
-
# documentation.
|
5
|
-
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
|
6
|
-
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
7
|
-
|
8
|
-
name: Ruby
|
9
|
-
|
10
|
-
on:
|
11
|
-
push:
|
12
|
-
branches: [ master ]
|
13
|
-
pull_request:
|
14
|
-
branches: [ master ]
|
15
|
-
|
16
|
-
jobs:
|
17
|
-
test:
|
18
|
-
|
19
|
-
runs-on: ubuntu-latest
|
20
|
-
strategy:
|
21
|
-
matrix:
|
22
|
-
ruby-version: ['2.6', '2.7', '3.0']
|
23
|
-
|
24
|
-
steps:
|
25
|
-
- uses: actions/checkout@v2
|
26
|
-
- name: Set up Ruby
|
27
|
-
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
28
|
-
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
29
|
-
# uses: ruby/setup-ruby@v1
|
30
|
-
uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
|
31
|
-
with:
|
32
|
-
ruby-version: ${{ matrix.ruby-version }}
|
33
|
-
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
34
|
-
- name: Run tests
|
35
|
-
run: bundle exec rake test
|
data/.gitignore
DELETED
data/.travis.yml
DELETED
data/Gemfile
DELETED
data/Rakefile
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
$:.unshift 'build'
|
2
|
-
if File.exists? 'lib/dbi'
|
3
|
-
require 'Rakefile.dbi'
|
4
|
-
elsif File.exists? 'lib/dbd'
|
5
|
-
require 'rake_task_lib'
|
6
|
-
build_dbd_tasks(File.basename(Dir['lib/dbd/*.rb'][0], '.rb').downcase)
|
7
|
-
else
|
8
|
-
abort "Well, this is odd; No DBI or DBD found."
|
9
|
-
end
|
10
|
-
require 'bundler/gem_tasks'
|
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
|
-
|
data/build/rake_task_lib.rb
DELETED
@@ -1,186 +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('y'+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 = 'zdavatz@ywesee.com'
|
61
|
-
gem.homepage = 'https://github.com/zdavatz/ydbi'
|
62
|
-
gem.platform = Gem::Platform::RUBY
|
63
|
-
gem.extra_rdoc_files = DOC_FILES
|
64
|
-
gem.required_ruby_version = '>= 1.8.0'
|
65
|
-
gem.rubyforge_project = 'ydbi'
|
66
|
-
return gem
|
67
|
-
end
|
68
|
-
|
69
|
-
# builds a dbd namespace from the DBD_PACKAGES hash
|
70
|
-
def dbd_namespace(dbd)
|
71
|
-
"ydbd-" + dbd.to_s.downcase
|
72
|
-
end
|
73
|
-
|
74
|
-
def dbd_code_files(dbd)
|
75
|
-
code_files = [
|
76
|
-
"test/dbd/general/**",
|
77
|
-
File.join("test", "dbd", dbd.downcase == "pg" ? "postgresql" : dbd.downcase, "*"),
|
78
|
-
File.join("lib", "dbd", dbd + ".rb"),
|
79
|
-
"lib/dbd/#{dbd.downcase}/*.rb",
|
80
|
-
] + DBD_FILES
|
81
|
-
end
|
82
|
-
|
83
|
-
def dbd_gem_files(code_files)
|
84
|
-
DBD_FILES + gem_files(code_files)
|
85
|
-
end
|
86
|
-
|
87
|
-
def dbd_package_files(code_files)
|
88
|
-
DBD_FILES + package_files(code_files)
|
89
|
-
end
|
90
|
-
|
91
|
-
def dbd_gem_spec(dbd, dbd_const, code_files)
|
92
|
-
spec = boilerplate_spec
|
93
|
-
spec.name = dbd_namespace(dbd)
|
94
|
-
spec.version = dbd_version(dbd_const)
|
95
|
-
spec.test_file = 'test/ts_dbd.rb'
|
96
|
-
spec.files = gem_files(code_files)
|
97
|
-
spec.summary = dbd_description(dbd_const)
|
98
|
-
spec.description = dbd_description(dbd_const)
|
99
|
-
spec.add_dependency 'ydbi', DBI::VERSION
|
100
|
-
|
101
|
-
dcdbd = dbd.downcase
|
102
|
-
|
103
|
-
if DBD_GEM_DEP_MAP[dcdbd]
|
104
|
-
spec.add_dependency DBD_GEM_DEP_MAP[dcdbd]
|
105
|
-
end
|
106
|
-
|
107
|
-
return spec
|
108
|
-
end
|
109
|
-
|
110
|
-
def dbd_version(const)
|
111
|
-
DBI::DBD.const_get(const).const_get("VERSION")
|
112
|
-
end
|
113
|
-
|
114
|
-
def dbd_description(const)
|
115
|
-
DBI::DBD.const_get(const).const_get("DESCRIPTION")
|
116
|
-
end
|
117
|
-
|
118
|
-
|
119
|
-
def build_dbd_tasks(dbd)
|
120
|
-
task :default => DEFAULT_TASKS
|
121
|
-
|
122
|
-
begin
|
123
|
-
done = false
|
124
|
-
dbd_const = nil
|
125
|
-
Dir["lib/dbd/*.rb"].each do |dbd_file|
|
126
|
-
if File.basename(dbd_file.downcase, '.rb') == dbd.to_s.downcase
|
127
|
-
dbd_const = File.basename(dbd_file, '.rb')
|
128
|
-
require "dbd/#{dbd_const}"
|
129
|
-
done = true
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
abort "No DBD found even though we asked to make tasks for it" unless done
|
134
|
-
|
135
|
-
code_files = dbd_code_files(dbd_const)
|
136
|
-
|
137
|
-
spec = dbd_gem_spec(dbd, dbd_const, code_files)
|
138
|
-
|
139
|
-
build_package_tasks(spec, code_files)
|
140
|
-
|
141
|
-
# FIXME: convert to a rake_test_loader sooner or later
|
142
|
-
task :test do
|
143
|
-
ENV["DBTYPES"] = dbd
|
144
|
-
ruby "test/ts_dbd.rb"
|
145
|
-
end
|
146
|
-
rescue LoadError => e
|
147
|
-
DEFAULT_TASKS.each do |x|
|
148
|
-
task x do
|
149
|
-
end
|
150
|
-
end
|
151
|
-
warn "Skipping #{dbd_namespace(dbd)} because we can't require DBD"
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
def build_dbi_tasks
|
156
|
-
end
|
157
|
-
|
158
|
-
#
|
159
|
-
# basic tasks
|
160
|
-
#
|
161
|
-
|
162
|
-
task :dist => [:distclean, :package, :rdoc]
|
163
|
-
task :distclean => [:clobber_package, :clobber_rdoc]
|
164
|
-
task :clean => [:distclean]
|
165
|
-
task :default => [:test, :dist]
|
166
|
-
|
167
|
-
task :to_blog => [:clobber_rdoc, :rdoc] do
|
168
|
-
sh "rm -r $git/blog/content/docs/ruby-dbi && mv rdoc $git/blog/content/docs/ruby-dbi"
|
169
|
-
end
|
170
|
-
|
171
|
-
#
|
172
|
-
# Documentation
|
173
|
-
#
|
174
|
-
|
175
|
-
RDoc::Task.new do |rd|
|
176
|
-
rd.rdoc_dir = "rdoc"
|
177
|
-
rd.main = "readme.md"
|
178
|
-
rd.rdoc_files.include("./readme.md")
|
179
|
-
rd.rdoc_files.include("./ChangeLog")
|
180
|
-
rd.rdoc_files.include("./LICENSE")
|
181
|
-
rd.rdoc_files.include("./doc/**/*.rdoc")
|
182
|
-
rd.rdoc_files.include("./lib/**/*.rb")
|
183
|
-
rd.rdoc_files.include("./ext/**/*.c")
|
184
|
-
rd.options = %w(-a)
|
185
|
-
end
|
186
|
-
|