do_sqlite3 0.9.12-java
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.
- data/History.txt +14 -0
- data/LICENSE +20 -0
- data/Manifest.txt +31 -0
- data/README.txt +3 -0
- data/Rakefile +16 -0
- data/lib/do_sqlite3.rb +38 -0
- data/lib/do_sqlite3/transaction.rb +36 -0
- data/lib/do_sqlite3/version.rb +5 -0
- data/lib/do_sqlite3_ext.jar +0 -0
- data/spec/command_spec.rb +8 -0
- data/spec/connection_spec.rb +18 -0
- data/spec/lib/rspec_immediate_feedback_formatter.rb +3 -0
- data/spec/reader_spec.rb +8 -0
- data/spec/result_spec.rb +9 -0
- data/spec/spec_helper.rb +124 -0
- data/spec/typecast/array_spec.rb +8 -0
- data/spec/typecast/bigdecimal_spec.rb +8 -0
- data/spec/typecast/boolean_spec.rb +8 -0
- data/spec/typecast/byte_array_spec.rb +9 -0
- data/spec/typecast/class_spec.rb +8 -0
- data/spec/typecast/date_spec.rb +8 -0
- data/spec/typecast/datetime_spec.rb +8 -0
- data/spec/typecast/float_spec.rb +8 -0
- data/spec/typecast/integer_spec.rb +8 -0
- data/spec/typecast/nil_spec.rb +10 -0
- data/spec/typecast/range_spec.rb +8 -0
- data/spec/typecast/string_spec.rb +8 -0
- data/spec/typecast/time_spec.rb +8 -0
- data/tasks/gem.rake +61 -0
- data/tasks/install.rake +15 -0
- data/tasks/native.rake +35 -0
- data/tasks/release.rake +75 -0
- data/tasks/retrieve.rake +104 -0
- data/tasks/spec.rake +18 -0
- metadata +147 -0
data/History.txt
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
== 0.9.11 2009-01-19
|
2
|
+
* Improvements
|
3
|
+
* Ruby 1.9 support
|
4
|
+
* Fixes
|
5
|
+
* Fix Windows gem
|
6
|
+
|
7
|
+
== 0.9.9 2008-11-27
|
8
|
+
* Improvements
|
9
|
+
* Added cross compile rake tasks for Windows gems [Jonathan Stott, Luis Lavena]
|
10
|
+
* Added initial support for Ruby 1.9 [John Harrison]
|
11
|
+
|
12
|
+
* Bug Fixes
|
13
|
+
* Removed sqlite3.dll from source gem [Dan Kubb]
|
14
|
+
* Removed hard coded .bundle from source [Dirkjan Bussink]
|
data/LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2007, 2008, 2009 Yehuda Katz, Dirkjan Bussink
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Manifest.txt
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
.gitignore
|
2
|
+
History.txt
|
3
|
+
LICENSE
|
4
|
+
Manifest.txt
|
5
|
+
README.txt
|
6
|
+
Rakefile
|
7
|
+
buildfile
|
8
|
+
ext-java/src/main/java/DoSqlite3ExtService.java
|
9
|
+
ext-java/src/main/java/do_sqlite3/Sqlite3DriverDefinition.java
|
10
|
+
ext/do_sqlite3_ext/do_sqlite3_ext.c
|
11
|
+
ext/do_sqlite3_ext/extconf.rb
|
12
|
+
lib/do_sqlite3.rb
|
13
|
+
lib/do_sqlite3/transaction.rb
|
14
|
+
lib/do_sqlite3/version.rb
|
15
|
+
spec/command_spec.rb
|
16
|
+
spec/connection_spec.rb
|
17
|
+
spec/reader_spec.rb
|
18
|
+
spec/result_spec.rb
|
19
|
+
spec/spec.opts
|
20
|
+
spec/spec_helper.rb
|
21
|
+
spec/typecast/bigdecimal_spec.rb
|
22
|
+
spec/typecast/boolean_spec.rb
|
23
|
+
spec/typecast/byte_array_spec.rb
|
24
|
+
spec/typecast/class_spec.rb
|
25
|
+
spec/typecast/date_spec.rb
|
26
|
+
spec/typecast/datetime_spec.rb
|
27
|
+
spec/typecast/float_spec.rb
|
28
|
+
spec/typecast/integer_spec.rb
|
29
|
+
spec/typecast/nil_spec.rb
|
30
|
+
spec/typecast/string_spec.rb
|
31
|
+
spec/typecast/time_spec.rb
|
data/README.txt
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'rake/clean'
|
4
|
+
|
5
|
+
require 'pathname'
|
6
|
+
require 'lib/do_sqlite3/version'
|
7
|
+
|
8
|
+
ROOT = Pathname(__FILE__).dirname.expand_path
|
9
|
+
JRUBY = RUBY_PLATFORM =~ /java/
|
10
|
+
WINDOWS = Gem.win_platform?
|
11
|
+
SUDO = (WINDOWS || JRUBY) ? '' : ('sudo' unless ENV['SUDOLESS'])
|
12
|
+
BINARY_VERSION = '3_6_13'
|
13
|
+
|
14
|
+
Dir['tasks/*.rake'].each { |f| import f }
|
15
|
+
|
16
|
+
CLEAN.include(%w[ {tmp,pkg}/ **/*.{o,so,bundle,jar,log,a,gem,dSYM,obj,pdb,exp,DS_Store,rbc,db} ext/do_sqlite3_ext/Makefile ext-java/target ])
|
data/lib/do_sqlite3.rb
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
# HACK: If running on Windows, then add the current directory to the PATH
|
2
|
+
# for the current process so it can find the bundled dlls before the require
|
3
|
+
# of the actual extension file.
|
4
|
+
if RUBY_PLATFORM.match(/mingw|mswin/i)
|
5
|
+
libdir = File.expand_path(File.dirname(__FILE__)).gsub(File::SEPARATOR, File::ALT_SEPARATOR)
|
6
|
+
ENV['PATH'] = "#{libdir};" + ENV['PATH']
|
7
|
+
end
|
8
|
+
|
9
|
+
require 'rubygems'
|
10
|
+
require 'data_objects'
|
11
|
+
if RUBY_PLATFORM =~ /java/
|
12
|
+
require 'do_jdbc'
|
13
|
+
require 'java'
|
14
|
+
gem 'jdbc-sqlite3'
|
15
|
+
require 'jdbc/sqlite3' # the JDBC driver, packaged as a gem
|
16
|
+
end
|
17
|
+
|
18
|
+
require 'do_sqlite3_ext'
|
19
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'do_sqlite3', 'version'))
|
20
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'do_sqlite3', 'transaction'))
|
21
|
+
|
22
|
+
if RUBY_PLATFORM =~ /java/
|
23
|
+
# Another way of loading the JDBC Class. This seems to be more reliable
|
24
|
+
# than Class.forName() within the data_objects.Connection Java class,
|
25
|
+
# which is currently not working as expected.
|
26
|
+
import 'org.sqlite.JDBC'
|
27
|
+
|
28
|
+
module DataObjects
|
29
|
+
module Sqlite3
|
30
|
+
class Connection
|
31
|
+
def self.pool_size
|
32
|
+
20
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
|
2
|
+
module DataObjects
|
3
|
+
|
4
|
+
module Sqlite3
|
5
|
+
|
6
|
+
class Transaction < DataObjects::Transaction
|
7
|
+
|
8
|
+
def begin
|
9
|
+
cmd = "BEGIN"
|
10
|
+
connection.create_command(cmd).execute_non_query
|
11
|
+
end
|
12
|
+
|
13
|
+
def commit
|
14
|
+
cmd = "COMMIT"
|
15
|
+
connection.create_command(cmd).execute_non_query
|
16
|
+
end
|
17
|
+
|
18
|
+
def rollback
|
19
|
+
cmd = "ROLLBACK"
|
20
|
+
connection.create_command(cmd).execute_non_query
|
21
|
+
end
|
22
|
+
|
23
|
+
def rollback_prepared
|
24
|
+
cmd = "ROLLBACK"
|
25
|
+
connection.create_command(cmd).execute_non_query
|
26
|
+
end
|
27
|
+
|
28
|
+
def prepare
|
29
|
+
# Eek, I don't know how to do this. Lets hope a commit arrives soon...
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
Binary file
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
|
4
|
+
require 'data_objects/spec/connection_spec'
|
5
|
+
|
6
|
+
describe DataObjects::Sqlite3::Connection do
|
7
|
+
|
8
|
+
before :all do
|
9
|
+
@driver = CONFIG.scheme
|
10
|
+
@user = CONFIG.user
|
11
|
+
@password = CONFIG.pass
|
12
|
+
@host = CONFIG.host
|
13
|
+
@port = CONFIG.port
|
14
|
+
@database = CONFIG.database
|
15
|
+
end
|
16
|
+
|
17
|
+
it_should_behave_like 'a Connection'
|
18
|
+
end
|
data/spec/reader_spec.rb
ADDED
data/spec/result_spec.rb
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
|
4
|
+
require 'data_objects/spec/result_spec'
|
5
|
+
|
6
|
+
describe DataObjects::Sqlite3::Result do
|
7
|
+
it_should_behave_like 'a Result'
|
8
|
+
it_should_behave_like 'a Result which returns inserted keys'
|
9
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,124 @@
|
|
1
|
+
$TESTING=true
|
2
|
+
JRUBY = RUBY_PLATFORM =~ /java/
|
3
|
+
|
4
|
+
require 'rubygems'
|
5
|
+
|
6
|
+
gem 'rspec', '>1.1.12'
|
7
|
+
require 'spec'
|
8
|
+
|
9
|
+
require 'date'
|
10
|
+
require 'ostruct'
|
11
|
+
require 'pathname'
|
12
|
+
require 'fileutils'
|
13
|
+
|
14
|
+
# put data_objects from repository in the load path
|
15
|
+
# DO NOT USE installed gem of data_objects!
|
16
|
+
$:.unshift File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'data_objects', 'lib'))
|
17
|
+
require 'data_objects'
|
18
|
+
|
19
|
+
DATAOBJECTS_SPEC_ROOT = Pathname(__FILE__).dirname.parent.parent + 'data_objects' + 'spec'
|
20
|
+
Pathname.glob((DATAOBJECTS_SPEC_ROOT + 'lib/**/*.rb').to_s).each { |f| require f }
|
21
|
+
|
22
|
+
if JRUBY
|
23
|
+
$:.unshift File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'do_jdbc', 'lib'))
|
24
|
+
require 'do_jdbc'
|
25
|
+
end
|
26
|
+
|
27
|
+
# put the pre-compiled extension in the path to be found
|
28
|
+
$:.unshift File.expand_path(File.join(File.dirname(__FILE__), '..', 'lib'))
|
29
|
+
require 'do_sqlite3'
|
30
|
+
|
31
|
+
log_path = File.expand_path(File.join(File.dirname(__FILE__), '..', 'log', 'do.log'))
|
32
|
+
FileUtils.mkdir_p(File.dirname(log_path))
|
33
|
+
|
34
|
+
DataObjects::Sqlite3.logger = DataObjects::Logger.new(log_path, :debug)
|
35
|
+
|
36
|
+
at_exit { DataObjects.logger.flush }
|
37
|
+
|
38
|
+
Spec::Runner.configure do |config|
|
39
|
+
config.include(DataObjects::Spec::PendingHelpers)
|
40
|
+
end
|
41
|
+
|
42
|
+
CONFIG = OpenStruct.new
|
43
|
+
CONFIG.scheme = 'sqlite3'
|
44
|
+
CONFIG.database = ENV['DO_SQLITE3_DATABASE'] || "#{File.expand_path(File.dirname(__FILE__))}/test.db"
|
45
|
+
|
46
|
+
CONFIG.uri = ENV["DO_SQLITE3_SPEC_URI"] || "#{CONFIG.scheme}://#{CONFIG.database}"
|
47
|
+
|
48
|
+
module DataObjectsSpecHelpers
|
49
|
+
|
50
|
+
def setup_test_environment
|
51
|
+
conn = DataObjects::Connection.new(CONFIG.uri)
|
52
|
+
|
53
|
+
conn.create_command(<<-EOF).execute_non_query
|
54
|
+
DROP TABLE IF EXISTS "invoices"
|
55
|
+
EOF
|
56
|
+
|
57
|
+
conn.create_command(<<-EOF).execute_non_query
|
58
|
+
DROP TABLE IF EXISTS "users"
|
59
|
+
EOF
|
60
|
+
|
61
|
+
conn.create_command(<<-EOF).execute_non_query
|
62
|
+
DROP TABLE IF EXISTS "widgets"
|
63
|
+
EOF
|
64
|
+
|
65
|
+
conn.create_command(<<-EOF).execute_non_query
|
66
|
+
CREATE TABLE "users" (
|
67
|
+
"id" SERIAL,
|
68
|
+
"name" VARCHAR(200) default 'Billy' NULL,
|
69
|
+
"fired_at" timestamp,
|
70
|
+
PRIMARY KEY ("id")
|
71
|
+
);
|
72
|
+
EOF
|
73
|
+
|
74
|
+
conn.create_command(<<-EOF).execute_non_query
|
75
|
+
CREATE TABLE "invoices" (
|
76
|
+
"id" SERIAL,
|
77
|
+
"invoice_number" varchar(50) NOT NULL,
|
78
|
+
PRIMARY KEY ("id")
|
79
|
+
);
|
80
|
+
EOF
|
81
|
+
|
82
|
+
conn.create_command(<<-EOF).execute_non_query
|
83
|
+
CREATE TABLE "widgets" (
|
84
|
+
"id" INTEGER PRIMARY KEY AUTOINCREMENT,
|
85
|
+
"code" char(8) default 'A14' NULL,
|
86
|
+
"name" varchar(200) default 'Super Widget' NULL,
|
87
|
+
"shelf_location" text NULL,
|
88
|
+
"description" text NULL,
|
89
|
+
"image_data" blob NULL,
|
90
|
+
"ad_description" text NULL,
|
91
|
+
"ad_image" blob NULL,
|
92
|
+
"whitepaper_text" text NULL,
|
93
|
+
"cad_drawing" blob,
|
94
|
+
"flags" char default 'f',
|
95
|
+
"number_in_stock" smallint default 500,
|
96
|
+
"number_sold" integer default 0,
|
97
|
+
"super_number" bigint default 9223372036854775807,
|
98
|
+
"weight" float default 1.23,
|
99
|
+
"cost1" double precision default 10.23,
|
100
|
+
"cost2" decimal(8,2) default 50.23,
|
101
|
+
"release_date" date default '2008-02-14',
|
102
|
+
"release_datetime" timestamp default '2008-02-14T00:31:12+00:00',
|
103
|
+
"release_timestamp" timestamp with time zone default '2008-02-14 00:31:31'
|
104
|
+
);
|
105
|
+
EOF
|
106
|
+
|
107
|
+
1.upto(16) do |n|
|
108
|
+
conn.create_command(<<-EOF).execute_non_query
|
109
|
+
insert into widgets(code, name, shelf_location, description, image_data, ad_description, ad_image, whitepaper_text, cad_drawing, super_number, weight) VALUES ('W#{n.to_s.rjust(7,"0")}', 'Widget #{n}', 'A14', 'This is a description', 'IMAGE DATA', 'Buy this product now!', 'AD IMAGE DATA', 'String', 'CAD DRAWING', 1234, 13.4);
|
110
|
+
EOF
|
111
|
+
end
|
112
|
+
|
113
|
+
conn.create_command(<<-EOF).execute_non_query
|
114
|
+
update widgets set flags = 't' where id = 2
|
115
|
+
EOF
|
116
|
+
|
117
|
+
conn.create_command(<<-EOF).execute_non_query
|
118
|
+
update widgets set ad_description = NULL where id = 3
|
119
|
+
EOF
|
120
|
+
|
121
|
+
conn.close
|
122
|
+
end
|
123
|
+
|
124
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
|
4
|
+
require 'data_objects/spec/typecast/bigdecimal_spec'
|
5
|
+
|
6
|
+
describe 'DataObjects::Sqlite3 with BigDecimal' do
|
7
|
+
it_should_behave_like 'supporting BigDecimal'
|
8
|
+
end
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
|
4
|
+
require 'data_objects/spec/typecast/byte_array_spec'
|
5
|
+
|
6
|
+
describe 'DataObjects::Sqlite3 with ByteArray' do
|
7
|
+
# We need to switch to using parameter binding for this to work with Sqlite3
|
8
|
+
# it_should_behave_like 'supporting ByteArray'
|
9
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper'))
|
4
|
+
require 'data_objects/spec/typecast/nil_spec'
|
5
|
+
|
6
|
+
describe 'DataObjects::Sqlite3 with Nil' do
|
7
|
+
it_should_behave_like 'supporting Nil'
|
8
|
+
# it_should_behave_like 'supporting writing an Nil'
|
9
|
+
it_should_behave_like 'supporting Nil autocasting'
|
10
|
+
end
|
data/tasks/gem.rake
ADDED
@@ -0,0 +1,61 @@
|
|
1
|
+
require 'rubygems/package_task'
|
2
|
+
|
3
|
+
GEM_SPEC = Gem::Specification.new do |s|
|
4
|
+
# basic information
|
5
|
+
s.name = "do_sqlite3"
|
6
|
+
s.version = DataObjects::Sqlite3::VERSION
|
7
|
+
|
8
|
+
# description and details
|
9
|
+
s.summary = 'DataObjects Sqlite3 Driver'
|
10
|
+
s.description = "Implements the DataObjects API for Sqlite3"
|
11
|
+
|
12
|
+
# dependencies
|
13
|
+
s.add_dependency "addressable", "~>2.0.0"
|
14
|
+
s.add_dependency "extlib", "~>0.9.12"
|
15
|
+
s.add_dependency "data_objects", DataObjects::Sqlite3::VERSION
|
16
|
+
|
17
|
+
if JRUBY
|
18
|
+
s.add_dependency "jdbc-sqlite3", ">=3.5.8"
|
19
|
+
s.add_dependency "do_jdbc", DataObjects::Sqlite3::VERSION
|
20
|
+
s.platform = "java"
|
21
|
+
# components, files and paths
|
22
|
+
s.files = FileList["lib/**/*.rb", "spec/**/*.rb", "tasks/**/*.rake",
|
23
|
+
"LICENSE", "Rakefile", "*.{rdoc,txt,yml}", "lib/*.jar"]
|
24
|
+
else
|
25
|
+
s.platform = Gem::Platform::RUBY
|
26
|
+
s.extensions << 'ext/do_sqlite3_ext/extconf.rb'
|
27
|
+
# components, files and paths
|
28
|
+
s.files = FileList["lib/**/*.rb", "spec/**/*.rb", "tasks/**/*.rake", "ext/**/*.{rb,c}",
|
29
|
+
"LICENSE", "Rakefile", "*.{rdoc,txt,yml}"]
|
30
|
+
end
|
31
|
+
|
32
|
+
# development dependencies
|
33
|
+
s.add_development_dependency 'rspec', '~>1.2.0'
|
34
|
+
|
35
|
+
|
36
|
+
s.require_path = 'lib'
|
37
|
+
|
38
|
+
# documentation
|
39
|
+
s.has_rdoc = false
|
40
|
+
|
41
|
+
# project information
|
42
|
+
s.homepage = 'http://github.com/datamapper/do'
|
43
|
+
s.rubyforge_project = 'dorb'
|
44
|
+
|
45
|
+
# author and contributors
|
46
|
+
s.author = 'Dirkjan Bussink'
|
47
|
+
s.email = 'd.bussink@gmail.com'
|
48
|
+
end
|
49
|
+
|
50
|
+
gem_package = Gem::PackageTask.new(GEM_SPEC) do |pkg|
|
51
|
+
pkg.need_tar = false
|
52
|
+
pkg.need_zip = false
|
53
|
+
end
|
54
|
+
|
55
|
+
file "#{GEM_SPEC.name}.gemspec" => ['Rakefile', 'tasks/gem.rake'] do |t|
|
56
|
+
puts "Generating #{t.name}"
|
57
|
+
File.open(t.name, 'w') { |f| f.puts GEM_SPEC.to_yaml }
|
58
|
+
end
|
59
|
+
|
60
|
+
desc "Generate or update the standalone gemspec file for the project"
|
61
|
+
task :gemspec => ["#{GEM_SPEC.name}.gemspec"]
|
data/tasks/install.rake
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
def sudo_gem(cmd)
|
2
|
+
sh "#{SUDO} #{RUBY} -S gem #{cmd}", :verbose => false
|
3
|
+
end
|
4
|
+
|
5
|
+
# Installation
|
6
|
+
|
7
|
+
desc "Install #{GEM_SPEC.name} #{GEM_SPEC.version}"
|
8
|
+
task :install => [ :package ] do
|
9
|
+
sudo_gem "install pkg/#{GEM_SPEC.name}-#{GEM_SPEC.version} --no-update-sources"
|
10
|
+
end
|
11
|
+
|
12
|
+
desc "Uninstall #{GEM_SPEC.name} #{GEM_SPEC.version}"
|
13
|
+
task :uninstall => [ :clean ] do
|
14
|
+
sudo_gem "uninstall #{GEM_SPEC.name} -v#{GEM_SPEC.version} -I -x"
|
15
|
+
end
|
data/tasks/native.rake
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
begin
|
2
|
+
gem('rake-compiler')
|
3
|
+
require 'rake/extensiontask'
|
4
|
+
|
5
|
+
# compile the extension
|
6
|
+
if JRUBY
|
7
|
+
# XXX: is it necessary to run this everytime?
|
8
|
+
Rake::Task['compile:jruby'].invoke
|
9
|
+
end
|
10
|
+
|
11
|
+
Rake::ExtensionTask.new('do_sqlite3_ext', GEM_SPEC) do |ext|
|
12
|
+
|
13
|
+
sqlite3_lib = File.expand_path(File.join(File.dirname(__FILE__), '..', 'vendor', 'sqlite3'))
|
14
|
+
|
15
|
+
ext.cross_compile = true
|
16
|
+
ext.cross_platform = ['x86-mingw32', 'x86-mswin32-60']
|
17
|
+
ext.cross_config_options << "--with-sqlite3-dir=#{sqlite3_lib}"
|
18
|
+
|
19
|
+
# automatically add build options to avoid need of manual input
|
20
|
+
if RUBY_PLATFORM =~ /mswin|mingw/ then
|
21
|
+
ext.config_options << "--with-sqlite3-dir=#{sqlite3_lib}"
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
rescue LoadError
|
26
|
+
warn "To cross-compile, install rake-compiler (gem install rake-compiler)"
|
27
|
+
|
28
|
+
if (tasks_dir = ROOT.parent + 'tasks').directory?
|
29
|
+
require tasks_dir + 'ext_helper'
|
30
|
+
require tasks_dir + 'ext_helper_java'
|
31
|
+
|
32
|
+
setup_c_extension("#{GEM_SPEC.name}_ext", GEM_SPEC)
|
33
|
+
setup_java_extension("#{GEM_SPEC.name}_ext", GEM_SPEC)
|
34
|
+
end
|
35
|
+
end
|
data/tasks/release.rake
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
begin
|
2
|
+
gem 'rubyforge', '~> 1.0.1'
|
3
|
+
require 'rubyforge'
|
4
|
+
rescue Exception
|
5
|
+
nil
|
6
|
+
end
|
7
|
+
|
8
|
+
if defined?(RubyForge) then
|
9
|
+
if defined?(GEM_SPEC) then
|
10
|
+
desc 'Package and upload to RubyForge'
|
11
|
+
task :release => [:package] do |t|
|
12
|
+
ver = ENV['VERSION'] or fail "Must supply VERSION (rake release VERSION=x.y.z)."
|
13
|
+
|
14
|
+
# compare versions to avoid mistakes
|
15
|
+
unless ver == GEM_SPEC.version.to_s then
|
16
|
+
fail "Version mismatch (supplied and specification versions differ)."
|
17
|
+
end
|
18
|
+
|
19
|
+
# no rubyforge project? no release for you!
|
20
|
+
if GEM_SPEC.rubyforge_project == 'TODO' or GEM_SPEC.rubyforge_project.nil? then
|
21
|
+
fail "Must define rubyforge_project in your gem specification."
|
22
|
+
end
|
23
|
+
|
24
|
+
# instantiate a RubyForge object
|
25
|
+
rf = RubyForge.new
|
26
|
+
|
27
|
+
# read project info and overview
|
28
|
+
notes = begin
|
29
|
+
r = File.read("README.rdoc")
|
30
|
+
r.split(/^(=+ .*)/)[1..4].join.strip
|
31
|
+
rescue
|
32
|
+
warn "Missing README.rdoc"
|
33
|
+
''
|
34
|
+
end
|
35
|
+
|
36
|
+
# read changes
|
37
|
+
changes = begin
|
38
|
+
h = File.read("History.txt")
|
39
|
+
h.split(/^(==+ .*)/)[1..2].join.strip
|
40
|
+
rescue
|
41
|
+
warn "Missing History.txt"
|
42
|
+
''
|
43
|
+
end
|
44
|
+
|
45
|
+
# build the configuration for the release
|
46
|
+
config = Hash.new
|
47
|
+
config["release_notes"] = notes
|
48
|
+
config["release_changes"] = changes
|
49
|
+
config["preformatted"] = true
|
50
|
+
|
51
|
+
# prepare configuration
|
52
|
+
rf.configure config
|
53
|
+
|
54
|
+
files = FileList["pkg/#{GEM_SPEC.name}-#{GEM_SPEC.version}*.*"].to_a
|
55
|
+
fail "No files found for the release." if files.empty?
|
56
|
+
|
57
|
+
puts "Logging in RubyForge..."
|
58
|
+
rf.login
|
59
|
+
|
60
|
+
puts "Files to upload:"
|
61
|
+
files.each do |f|
|
62
|
+
puts " * #{f}"
|
63
|
+
end
|
64
|
+
|
65
|
+
puts "Releasing #{GEM_SPEC.name} version #{GEM_SPEC.version}..."
|
66
|
+
rf.add_release GEM_SPEC.rubyforge_project, GEM_SPEC.name, GEM_SPEC.version, *files
|
67
|
+
puts "Done."
|
68
|
+
end
|
69
|
+
#Rake::Task['release'].prerequisites.unshift('clean', 'cross', 'native')
|
70
|
+
else
|
71
|
+
warn "no GEM_SPEC is found or defined. 'release' task cannot work without it."
|
72
|
+
end
|
73
|
+
else
|
74
|
+
warn "rubyforge gem is required to generate releases, please install it (gem install rubyforge)."
|
75
|
+
end
|
data/tasks/retrieve.rake
ADDED
@@ -0,0 +1,104 @@
|
|
1
|
+
begin
|
2
|
+
gem('rake-compiler')
|
3
|
+
require 'rake/clean'
|
4
|
+
require 'rake/extensioncompiler'
|
5
|
+
|
6
|
+
# download sqlite3 library and headers
|
7
|
+
|
8
|
+
# only on Windows or cross platform compilation
|
9
|
+
def dlltool(dllname, deffile, libfile)
|
10
|
+
# define if we are using GCC or not
|
11
|
+
if Rake::ExtensionCompiler.mingw_gcc_executable then
|
12
|
+
dir = File.dirname(Rake::ExtensionCompiler.mingw_gcc_executable)
|
13
|
+
tool = case RUBY_PLATFORM
|
14
|
+
when /mingw/
|
15
|
+
File.join(dir, 'dlltool.exe')
|
16
|
+
when /linux|darwin/
|
17
|
+
File.join(dir, "#{Rake::ExtensionCompiler.mingw_host}-dlltool")
|
18
|
+
end
|
19
|
+
return "#{tool} --dllname #{dllname} --def #{deffile} --output-lib #{libfile}"
|
20
|
+
else
|
21
|
+
if RUBY_PLATFORM =~ /mswin/ then
|
22
|
+
tool = 'lib.exe'
|
23
|
+
else
|
24
|
+
fail "Unsupported platform for cross-compilation (please, contribute some patches)."
|
25
|
+
end
|
26
|
+
return "#{tool} /DEF:#{deffile} /OUT:#{libfile}"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
# required folder structure for --with-sqlite3-dir (include + lib)
|
31
|
+
directory "vendor/sqlite3/lib"
|
32
|
+
directory "vendor/sqlite3/include"
|
33
|
+
|
34
|
+
# download amalgamation BINARY_VERSION (for include files)
|
35
|
+
file "vendor/sqlite-amalgamation-#{BINARY_VERSION}.zip" => ['vendor'] do |t|
|
36
|
+
url = "http://www.sqlite.org/#{File.basename(t.name)}"
|
37
|
+
when_writing "downloading #{t.name}" do
|
38
|
+
cd File.dirname(t.name) do
|
39
|
+
system "wget -c #{url} || curl -C - -O #{url}"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# download dll binaries
|
45
|
+
file "vendor/sqlitedll-#{BINARY_VERSION}.zip" => ['vendor'] do |t|
|
46
|
+
url = "http://www.sqlite.org/#{File.basename(t.name)}"
|
47
|
+
when_writing "downloading #{t.name}" do
|
48
|
+
cd File.dirname(t.name) do
|
49
|
+
system "wget -c #{url} || curl -C - -O #{url}"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
# extract header files into include folder
|
55
|
+
file "vendor/sqlite3/include/sqlite3.h" => ['vendor/sqlite3/include', "vendor/sqlite-amalgamation-#{BINARY_VERSION}.zip"] do |t|
|
56
|
+
full_file = File.expand_path(t.prerequisites.last)
|
57
|
+
when_writing "creating #{t.name}" do
|
58
|
+
cd File.dirname(t.name) do
|
59
|
+
sh "unzip #{full_file}"
|
60
|
+
# update file timestamp to avoid Rake perform this extraction again.
|
61
|
+
touch File.basename(t.name)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
# extract dll files into lib folder
|
67
|
+
file "vendor/sqlite3/lib/sqlite3.dll" => ['vendor/sqlite3/lib', "vendor/sqlitedll-#{BINARY_VERSION}.zip"] do |t|
|
68
|
+
full_file = File.expand_path(t.prerequisites.last)
|
69
|
+
when_writing "creating #{t.name}" do
|
70
|
+
cd File.dirname(t.name) do
|
71
|
+
sh "unzip #{full_file}"
|
72
|
+
# update file timestamp to avoid Rake perform this extraction again.
|
73
|
+
touch File.basename(t.name)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
# generate import library from definition and dll file
|
79
|
+
file "vendor/sqlite3/lib/sqlite3.lib" => ["vendor/sqlite3/lib/sqlite3.dll"] do |t|
|
80
|
+
libfile = t.name
|
81
|
+
dllname = libfile.ext('dll')
|
82
|
+
deffile = libfile.ext('def')
|
83
|
+
|
84
|
+
when_writing "creating #{t.name}" do
|
85
|
+
sh dlltool(dllname, deffile, libfile)
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
# clobber vendored packages
|
90
|
+
CLOBBER.include('vendor')
|
91
|
+
|
92
|
+
# vendor:sqlite3
|
93
|
+
task 'vendor:sqlite3' => ["vendor/sqlite3/lib/sqlite3.lib", "vendor/sqlite3/include/sqlite3.h"]
|
94
|
+
|
95
|
+
# hook into cross compilation vendored sqlite3 dependency
|
96
|
+
if RUBY_PLATFORM =~ /mingw|mswin/ then
|
97
|
+
Rake::Task['compile'].prerequisites.unshift 'vendor:sqlite3'
|
98
|
+
else
|
99
|
+
if Rake::Task.tasks.map {|t| t.name }.include? 'cross'
|
100
|
+
Rake::Task['cross'].prerequisites.unshift 'vendor:sqlite3'
|
101
|
+
end
|
102
|
+
end
|
103
|
+
rescue LoadError
|
104
|
+
end
|
data/tasks/spec.rake
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# Specs
|
2
|
+
require 'spec/rake/spectask'
|
3
|
+
|
4
|
+
desc 'Run specifications'
|
5
|
+
Spec::Rake::SpecTask.new(:spec => [ :clean, :compile ]) do |t|
|
6
|
+
t.spec_opts << '--options' << ROOT + 'spec/spec.opts'
|
7
|
+
t.spec_files = Pathname.glob(ENV['FILES'] || 'spec/**/*_spec.rb').map { |f| f.to_s }
|
8
|
+
|
9
|
+
begin
|
10
|
+
# RCov is run by default, except on the JRuby platform
|
11
|
+
t.rcov = JRUBY ? false : (ENV.has_key?('NO_RCOV') ? ENV['NO_RCOV'] != 'true' : true)
|
12
|
+
t.rcov_opts << '--exclude' << 'spec'
|
13
|
+
t.rcov_opts << '--text-summary'
|
14
|
+
t.rcov_opts << '--sort' << 'coverage' << '--sort-reverse'
|
15
|
+
rescue Exception
|
16
|
+
# rcov not installed
|
17
|
+
end
|
18
|
+
end
|
metadata
ADDED
@@ -0,0 +1,147 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
3
|
+
requirements:
|
4
|
+
- - '>='
|
5
|
+
- !ruby/object:Gem::Version
|
6
|
+
version: "0"
|
7
|
+
version:
|
8
|
+
email: d.bussink@gmail.com
|
9
|
+
cert_chain: []
|
10
|
+
|
11
|
+
summary: DataObjects Sqlite3 Driver
|
12
|
+
post_install_message:
|
13
|
+
extra_rdoc_files: []
|
14
|
+
|
15
|
+
homepage: http://github.com/datamapper/do
|
16
|
+
signing_key:
|
17
|
+
name: do_sqlite3
|
18
|
+
rdoc_options: []
|
19
|
+
|
20
|
+
rubyforge_project: dorb
|
21
|
+
autorequire:
|
22
|
+
licenses: []
|
23
|
+
|
24
|
+
executables: []
|
25
|
+
|
26
|
+
description: Implements the DataObjects API for Sqlite3
|
27
|
+
specification_version: 3
|
28
|
+
default_executable:
|
29
|
+
files:
|
30
|
+
- lib/do_sqlite3.rb
|
31
|
+
- lib/do_sqlite3/transaction.rb
|
32
|
+
- lib/do_sqlite3/version.rb
|
33
|
+
- spec/command_spec.rb
|
34
|
+
- spec/connection_spec.rb
|
35
|
+
- spec/reader_spec.rb
|
36
|
+
- spec/result_spec.rb
|
37
|
+
- spec/spec_helper.rb
|
38
|
+
- spec/lib/rspec_immediate_feedback_formatter.rb
|
39
|
+
- spec/typecast/array_spec.rb
|
40
|
+
- spec/typecast/bigdecimal_spec.rb
|
41
|
+
- spec/typecast/boolean_spec.rb
|
42
|
+
- spec/typecast/byte_array_spec.rb
|
43
|
+
- spec/typecast/class_spec.rb
|
44
|
+
- spec/typecast/date_spec.rb
|
45
|
+
- spec/typecast/datetime_spec.rb
|
46
|
+
- spec/typecast/float_spec.rb
|
47
|
+
- spec/typecast/integer_spec.rb
|
48
|
+
- spec/typecast/nil_spec.rb
|
49
|
+
- spec/typecast/range_spec.rb
|
50
|
+
- spec/typecast/string_spec.rb
|
51
|
+
- spec/typecast/time_spec.rb
|
52
|
+
- tasks/gem.rake
|
53
|
+
- tasks/install.rake
|
54
|
+
- tasks/native.rake
|
55
|
+
- tasks/release.rake
|
56
|
+
- tasks/retrieve.rake
|
57
|
+
- tasks/spec.rake
|
58
|
+
- LICENSE
|
59
|
+
- Rakefile
|
60
|
+
- History.txt
|
61
|
+
- Manifest.txt
|
62
|
+
- README.txt
|
63
|
+
- lib/do_sqlite3_ext.jar
|
64
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: "0"
|
69
|
+
version:
|
70
|
+
extensions: []
|
71
|
+
|
72
|
+
rubygems_version: 1.3.2
|
73
|
+
requirements: []
|
74
|
+
|
75
|
+
authors:
|
76
|
+
- Dirkjan Bussink
|
77
|
+
date: 2009-05-16 22:00:00 +00:00
|
78
|
+
platform: java
|
79
|
+
test_files: []
|
80
|
+
|
81
|
+
version: !ruby/object:Gem::Version
|
82
|
+
version: 0.9.12
|
83
|
+
require_paths:
|
84
|
+
- lib
|
85
|
+
dependencies:
|
86
|
+
- !ruby/object:Gem::Dependency
|
87
|
+
version_requirements: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - ~>
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: 2.0.0
|
92
|
+
version:
|
93
|
+
type: :runtime
|
94
|
+
version_requirement:
|
95
|
+
name: addressable
|
96
|
+
- !ruby/object:Gem::Dependency
|
97
|
+
version_requirements: !ruby/object:Gem::Requirement
|
98
|
+
requirements:
|
99
|
+
- - ~>
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: 0.9.12
|
102
|
+
version:
|
103
|
+
type: :runtime
|
104
|
+
version_requirement:
|
105
|
+
name: extlib
|
106
|
+
- !ruby/object:Gem::Dependency
|
107
|
+
version_requirements: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - "="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: 0.9.12
|
112
|
+
version:
|
113
|
+
type: :runtime
|
114
|
+
version_requirement:
|
115
|
+
name: data_objects
|
116
|
+
- !ruby/object:Gem::Dependency
|
117
|
+
version_requirements: !ruby/object:Gem::Requirement
|
118
|
+
requirements:
|
119
|
+
- - '>='
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: 3.5.8
|
122
|
+
version:
|
123
|
+
type: :runtime
|
124
|
+
version_requirement:
|
125
|
+
name: jdbc-sqlite3
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
version_requirements: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 0.9.12
|
132
|
+
version:
|
133
|
+
type: :runtime
|
134
|
+
version_requirement:
|
135
|
+
name: do_jdbc
|
136
|
+
- !ruby/object:Gem::Dependency
|
137
|
+
version_requirements: !ruby/object:Gem::Requirement
|
138
|
+
requirements:
|
139
|
+
- - ~>
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: 1.2.0
|
142
|
+
version:
|
143
|
+
type: :development
|
144
|
+
version_requirement:
|
145
|
+
name: rspec
|
146
|
+
bindir: bin
|
147
|
+
has_rdoc: false
|