sqlite3 0.0.8 → 0.1.0

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/README.rdoc CHANGED
@@ -1,17 +1,6 @@
1
1
  = sqlite3
2
2
 
3
- Description goes here.
4
-
5
- == Note on Patches/Pull Requests
6
-
7
- * Fork the project.
8
- * Make your feature addition or bug fix.
9
- * Add tests for it. This is important so I don't break it in a
10
- future version unintentionally.
11
- * Commit, do not mess with rakefile, version, or history.
12
- (if you want to have your own version, that is fine but
13
- bump version in a commit by itself I can ignore when I pull)
14
- * Send me a pull request. Bonus points for topic branches.
3
+ SQLite3 FFI bindings for Ruby 1.9.
15
4
 
16
5
  == Copyright
17
6
 
data/lib/sqlite3.rb CHANGED
@@ -10,3 +10,4 @@ require "sqlite3/statement"
10
10
  require "sqlite3/resultset"
11
11
  require "sqlite3/encoding"
12
12
  require "sqlite3/database"
13
+ require "sqlite3/version"
@@ -1,3 +1,35 @@
1
+ # Copyright (c) 2004, Jamis Buck (jamis@jamisbuck.org)
2
+ # All rights reserved.
3
+
4
+ # Redistribution and use in source and binary forms, with or without
5
+ # modification, are permitted provided that the following conditions
6
+ # are met:
7
+
8
+ # * Redistributions of source code must retain the above copyright
9
+ # notice, this list of conditions and the following disclaimer.
10
+
11
+ # * Redistributions in binary form must reproduce the above copyright
12
+ # notice, this list of conditions and the following disclaimer in
13
+ # the documentation and/or other materials provided with the
14
+ # distribution.
15
+
16
+ # * The names of its contributors may not be used to endorse or
17
+ # promote products derived from this software without specific prior
18
+ # written permission.
19
+
20
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23
+ # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24
+ # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25
+ # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26
+ # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27
+ # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28
+ # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29
+ # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
30
+ # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31
+ # POSSIBILITY OF SUCH DAMAGE.
32
+
1
33
  module SQLite3
2
34
  module Constants
3
35
 
@@ -1,3 +1,35 @@
1
+ # Copyright (c) 2004, Jamis Buck (jamis@jamisbuck.org)
2
+ # All rights reserved.
3
+
4
+ # Redistribution and use in source and binary forms, with or without
5
+ # modification, are permitted provided that the following conditions
6
+ # are met:
7
+
8
+ # * Redistributions of source code must retain the above copyright
9
+ # notice, this list of conditions and the following disclaimer.
10
+
11
+ # * Redistributions in binary form must reproduce the above copyright
12
+ # notice, this list of conditions and the following disclaimer in
13
+ # the documentation and/or other materials provided with the
14
+ # distribution.
15
+
16
+ # * The names of its contributors may not be used to endorse or
17
+ # promote products derived from this software without specific prior
18
+ # written permission.
19
+
20
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23
+ # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24
+ # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25
+ # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26
+ # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27
+ # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28
+ # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29
+ # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
30
+ # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31
+ # POSSIBILITY OF SUCH DAMAGE.
32
+
1
33
  module SQLite3
2
34
 
3
35
  # The Database class encapsulates a single connection to a SQLite3 database.
@@ -5,10 +5,10 @@ module SQLite3
5
5
  def open(filename, utf_16 = false)
6
6
  handle = FFI::MemoryPointer.new(:pointer)
7
7
  if utf_16
8
- filename = filename.encode(Encoding.utf_16native)
8
+ filename = filename.encode(Encoding.utf_16native) if filename.respond_to?(:encode)
9
9
  result = API.sqlite3_open16(c_string(filename), handle)
10
10
  else
11
- filename = filename.encode(Encoding.utf_8)
11
+ filename = filename.encode(Encoding.utf_8) if filename.respond_to?(:encode)
12
12
  result = API.sqlite3_open(filename, handle)
13
13
  end
14
14
  [result, handle.get_pointer(0)]
@@ -17,9 +17,13 @@ module SQLite3
17
17
  def errmsg(db, utf_16 = false)
18
18
  if utf_16
19
19
  ptr = API.sqlite3_errmsg16(db)
20
- get_string_utf_16(ptr).force_encoding(Encoding.utf_16native)
20
+ result = get_string_utf_16(ptr)
21
+ result.force_encoding(Encoding.utf_16native) if result.respond_to?(:force_encoding)
22
+ result
21
23
  else
22
- API.sqlite3_errmsg(db).force_encoding(Encoding.utf_8)
24
+ result = API.sqlite3_errmsg(db)
25
+ result.force_encoding(Encoding.utf_8) if result.respond_to?(:force_encoding)
26
+ result
23
27
  end
24
28
  end
25
29
 
@@ -1,3 +1,35 @@
1
+ # Copyright (c) 2004, Jamis Buck (jamis@jamisbuck.org)
2
+ # All rights reserved.
3
+
4
+ # Redistribution and use in source and binary forms, with or without
5
+ # modification, are permitted provided that the following conditions
6
+ # are met:
7
+
8
+ # * Redistributions of source code must retain the above copyright
9
+ # notice, this list of conditions and the following disclaimer.
10
+
11
+ # * Redistributions in binary form must reproduce the above copyright
12
+ # notice, this list of conditions and the following disclaimer in
13
+ # the documentation and/or other materials provided with the
14
+ # distribution.
15
+
16
+ # * The names of its contributors may not be used to endorse or
17
+ # promote products derived from this software without specific prior
18
+ # written permission.
19
+
20
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23
+ # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24
+ # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25
+ # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26
+ # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27
+ # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28
+ # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29
+ # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
30
+ # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31
+ # POSSIBILITY OF SUCH DAMAGE.
32
+
1
33
  module SQLite3
2
34
 
3
35
  class Exception < ::StandardError
@@ -1,3 +1,35 @@
1
+ # Copyright (c) 2004, Jamis Buck (jamis@jamisbuck.org)
2
+ # All rights reserved.
3
+
4
+ # Redistribution and use in source and binary forms, with or without
5
+ # modification, are permitted provided that the following conditions
6
+ # are met:
7
+
8
+ # * Redistributions of source code must retain the above copyright
9
+ # notice, this list of conditions and the following disclaimer.
10
+
11
+ # * Redistributions in binary form must reproduce the above copyright
12
+ # notice, this list of conditions and the following disclaimer in
13
+ # the documentation and/or other materials provided with the
14
+ # distribution.
15
+
16
+ # * The names of its contributors may not be used to endorse or
17
+ # promote products derived from this software without specific prior
18
+ # written permission.
19
+
20
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23
+ # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24
+ # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25
+ # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26
+ # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27
+ # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28
+ # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29
+ # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
30
+ # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31
+ # POSSIBILITY OF SUCH DAMAGE.
32
+
1
33
  module SQLite3
2
34
 
3
35
  # This module is intended for inclusion solely by the Database class. It
@@ -1,3 +1,35 @@
1
+ # Copyright (c) 2004, Jamis Buck (jamis@jamisbuck.org)
2
+ # All rights reserved.
3
+
4
+ # Redistribution and use in source and binary forms, with or without
5
+ # modification, are permitted provided that the following conditions
6
+ # are met:
7
+
8
+ # * Redistributions of source code must retain the above copyright
9
+ # notice, this list of conditions and the following disclaimer.
10
+
11
+ # * Redistributions in binary form must reproduce the above copyright
12
+ # notice, this list of conditions and the following disclaimer in
13
+ # the documentation and/or other materials provided with the
14
+ # distribution.
15
+
16
+ # * The names of its contributors may not be used to endorse or
17
+ # promote products derived from this software without specific prior
18
+ # written permission.
19
+
20
+ # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21
+ # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22
+ # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23
+ # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24
+ # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25
+ # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26
+ # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
27
+ # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
28
+ # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29
+ # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
30
+ # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31
+ # POSSIBILITY OF SUCH DAMAGE.
32
+
1
33
  module SQLite3
2
34
 
3
35
  # The ResultSet object encapsulates the enumerability of a query's output.
@@ -0,0 +1,3 @@
1
+ module SQLite3
2
+ VERSION = "0.1.0"
3
+ end
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sqlite3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 0
9
+ version: 0.1.0
5
10
  platform: ruby
6
11
  authors:
7
12
  - "Jakub Ku\xC5\xBAma"
@@ -9,74 +14,73 @@ autorequire:
9
14
  bindir: bin
10
15
  cert_chain: []
11
16
 
12
- date: 2010-02-09 00:00:00 +01:00
17
+ date: 2010-05-02 00:00:00 +02:00
13
18
  default_executable:
14
19
  dependencies:
15
20
  - !ruby/object:Gem::Dependency
16
21
  name: ffi
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
20
24
  requirements:
21
25
  - - ">="
22
26
  - !ruby/object:Gem::Version
23
- version: 0.6.0
24
- version:
27
+ segments:
28
+ - 0
29
+ - 6
30
+ - 3
31
+ version: 0.6.3
32
+ type: :runtime
33
+ version_requirements: *id001
25
34
  - !ruby/object:Gem::Dependency
26
35
  name: test-unit
27
- type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
30
38
  requirements:
31
39
  - - ">="
32
40
  - !ruby/object:Gem::Version
41
+ segments:
42
+ - 2
43
+ - 0
33
44
  version: "2.0"
34
- version:
45
+ type: :development
46
+ version_requirements: *id002
35
47
  - !ruby/object:Gem::Dependency
36
48
  name: activerecord
37
- type: :development
38
- version_requirement:
39
- version_requirements: !ruby/object:Gem::Requirement
49
+ prerelease: false
50
+ requirement: &id003 !ruby/object:Gem::Requirement
40
51
  requirements:
41
52
  - - ">="
42
53
  - !ruby/object:Gem::Version
54
+ segments:
55
+ - 2
56
+ - 3
57
+ - 5
43
58
  version: 2.3.5
44
- version:
59
+ type: :development
60
+ version_requirements: *id003
45
61
  description: SQLite3 FFI bindings for Ruby 1.9
46
62
  email: qoobaa@gmail.com
47
63
  executables: []
48
64
 
49
65
  extensions: []
50
66
 
51
- extra_rdoc_files:
52
- - LICENSE
53
- - README.rdoc
67
+ extra_rdoc_files: []
68
+
54
69
  files:
55
- - .document
56
- - .gitignore
57
- - LICENSE
58
- - README.rdoc
59
- - Rakefile
60
- - VERSION
61
- - lib/sqlite3.rb
70
+ - lib/sqlite3/driver.rb
71
+ - lib/sqlite3/resultset.rb
72
+ - lib/sqlite3/pragmas.rb
73
+ - lib/sqlite3/database.rb
74
+ - lib/sqlite3/version.rb
75
+ - lib/sqlite3/extensions.rb
76
+ - lib/sqlite3/errors.rb
62
77
  - lib/sqlite3/api.rb
63
78
  - lib/sqlite3/constants.rb
64
- - lib/sqlite3/database.rb
65
- - lib/sqlite3/driver.rb
66
79
  - lib/sqlite3/encoding.rb
67
- - lib/sqlite3/errors.rb
68
- - lib/sqlite3/extensions.rb
69
- - lib/sqlite3/pragmas.rb
70
- - lib/sqlite3/resultset.rb
71
80
  - lib/sqlite3/statement.rb
72
- - sqlite3.gemspec
73
- - test/fixtures/SQLite.gif
74
- - test/helper.rb
75
- - test/test_active_record.rb
76
- - test/test_database_initialization.rb
77
- - test/test_database_queries_utf_16.rb
78
- - test/test_database_queries_utf_8.rb
79
- - test/test_statement.rb
81
+ - lib/sqlite3.rb
82
+ - LICENSE
83
+ - README.rdoc
80
84
  has_rdoc: true
81
85
  homepage: http://github.com/qoobaa/sqlite3
82
86
  licenses: []
@@ -92,33 +96,32 @@ post_install_message: |
92
96
  Thank you for installing sqlite3 gem! Suggestions: qoobaa@gmail.com
93
97
  ================================================================================
94
98
 
95
- rdoc_options:
96
- - --charset=UTF-8
99
+ rdoc_options: []
100
+
97
101
  require_paths:
98
102
  - lib
99
103
  required_ruby_version: !ruby/object:Gem::Requirement
100
104
  requirements:
101
105
  - - ">="
102
106
  - !ruby/object:Gem::Version
107
+ segments:
108
+ - 0
103
109
  version: "0"
104
- version:
105
110
  required_rubygems_version: !ruby/object:Gem::Requirement
106
111
  requirements:
107
112
  - - ">="
108
113
  - !ruby/object:Gem::Version
109
- version: "0"
110
- version:
114
+ segments:
115
+ - 1
116
+ - 3
117
+ - 6
118
+ version: 1.3.6
111
119
  requirements: []
112
120
 
113
121
  rubyforge_project:
114
- rubygems_version: 1.3.5
122
+ rubygems_version: 1.3.6
115
123
  signing_key:
116
124
  specification_version: 3
117
125
  summary: SQLite3 FFI bindings for Ruby 1.9
118
- test_files:
119
- - test/test_database_queries_utf_8.rb
120
- - test/test_statement.rb
121
- - test/test_active_record.rb
122
- - test/test_database_queries_utf_16.rb
123
- - test/test_database_initialization.rb
124
- - test/helper.rb
126
+ test_files: []
127
+
data/.document DELETED
@@ -1,5 +0,0 @@
1
- README.rdoc
2
- lib/**/*.rb
3
- bin/*
4
- features/**/*.feature
5
- LICENSE
data/.gitignore DELETED
@@ -1,22 +0,0 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.swp
15
-
16
- ## PROJECT::GENERAL
17
- coverage
18
- rdoc
19
- pkg
20
-
21
- ## PROJECT::SPECIFIC
22
- *.gem
data/Rakefile DELETED
@@ -1,67 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require 'rubygems'
4
- require 'rake'
5
-
6
- begin
7
- require 'jeweler'
8
- Jeweler::Tasks.new do |gem|
9
- gem.name = "sqlite3"
10
- gem.summary = %Q{SQLite3 FFI bindings for Ruby 1.9}
11
- gem.description = %Q{SQLite3 FFI bindings for Ruby 1.9}
12
- gem.email = "qoobaa@gmail.com"
13
- gem.homepage = "http://github.com/qoobaa/sqlite3"
14
- gem.authors = ["Jakub Kuźma"]
15
- gem.add_dependency "ffi", ">= 0.6.0"
16
- gem.add_development_dependency "test-unit", ">= 2.0"
17
- gem.add_development_dependency "activerecord", ">= 2.3.5"
18
- # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
19
- gem.post_install_message = <<-EOM
20
- ==== WARNING ===================================================================
21
- This is an early alpha version of SQLite3/Ruby FFI bindings!
22
- Currently we support Ruby 1.9 ONLY.
23
-
24
- If you need native bindings for Ruby 1.8 - install sqlite3-ruby instead.
25
- You may need to uninstall this sqlite3 gem as well.
26
-
27
- Thank you for installing sqlite3 gem! Suggestions: qoobaa@gmail.com
28
- ================================================================================
29
- EOM
30
- end
31
- rescue LoadError
32
- puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
33
- end
34
-
35
- require 'rake/testtask'
36
- Rake::TestTask.new(:test) do |test|
37
- test.libs << 'lib' << 'test'
38
- test.pattern = 'test/**/test_*.rb'
39
- test.verbose = true
40
- end
41
-
42
- begin
43
- require 'rcov/rcovtask'
44
- Rcov::RcovTask.new do |test|
45
- test.libs << 'test'
46
- test.pattern = 'test/**/test_*.rb'
47
- test.verbose = true
48
- end
49
- rescue LoadError
50
- task :rcov do
51
- abort "RCov is not available. In order to run rcov, you must: sudo gem install spicycode-rcov"
52
- end
53
- end
54
-
55
- task :test => :check_dependencies
56
-
57
- task :default => :test
58
-
59
- require 'rake/rdoctask'
60
- Rake::RDocTask.new do |rdoc|
61
- version = File.exist?('VERSION') ? File.read('VERSION') : ""
62
-
63
- rdoc.rdoc_dir = 'rdoc'
64
- rdoc.title = "sqlite3 #{version}"
65
- rdoc.rdoc_files.include('README*')
66
- rdoc.rdoc_files.include('lib/**/*.rb')
67
- end
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.0.8
data/sqlite3.gemspec DELETED
@@ -1,89 +0,0 @@
1
- # Generated by jeweler
2
- # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
4
- # -*- encoding: utf-8 -*-
5
-
6
- Gem::Specification.new do |s|
7
- s.name = %q{sqlite3}
8
- s.version = "0.0.8"
9
-
10
- s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Jakub Kuźma"]
12
- s.date = %q{2010-02-09}
13
- s.description = %q{SQLite3 FFI bindings for Ruby 1.9}
14
- s.email = %q{qoobaa@gmail.com}
15
- s.extra_rdoc_files = [
16
- "LICENSE",
17
- "README.rdoc"
18
- ]
19
- s.files = [
20
- ".document",
21
- ".gitignore",
22
- "LICENSE",
23
- "README.rdoc",
24
- "Rakefile",
25
- "VERSION",
26
- "lib/sqlite3.rb",
27
- "lib/sqlite3/api.rb",
28
- "lib/sqlite3/constants.rb",
29
- "lib/sqlite3/database.rb",
30
- "lib/sqlite3/driver.rb",
31
- "lib/sqlite3/encoding.rb",
32
- "lib/sqlite3/errors.rb",
33
- "lib/sqlite3/extensions.rb",
34
- "lib/sqlite3/pragmas.rb",
35
- "lib/sqlite3/resultset.rb",
36
- "lib/sqlite3/statement.rb",
37
- "sqlite3.gemspec",
38
- "test/fixtures/SQLite.gif",
39
- "test/helper.rb",
40
- "test/test_active_record.rb",
41
- "test/test_database_initialization.rb",
42
- "test/test_database_queries_utf_16.rb",
43
- "test/test_database_queries_utf_8.rb",
44
- "test/test_statement.rb"
45
- ]
46
- s.homepage = %q{http://github.com/qoobaa/sqlite3}
47
- s.post_install_message = %q{==== WARNING ===================================================================
48
- This is an early alpha version of SQLite3/Ruby FFI bindings!
49
- Currently we support Ruby 1.9 ONLY.
50
-
51
- If you need native bindings for Ruby 1.8 - install sqlite3-ruby instead.
52
- You may need to uninstall this sqlite3 gem as well.
53
-
54
- Thank you for installing sqlite3 gem! Suggestions: qoobaa@gmail.com
55
- ================================================================================
56
- }
57
- s.rdoc_options = ["--charset=UTF-8"]
58
- s.require_paths = ["lib"]
59
- s.rubygems_version = %q{1.3.5}
60
- s.summary = %q{SQLite3 FFI bindings for Ruby 1.9}
61
- s.test_files = [
62
- "test/test_database_queries_utf_8.rb",
63
- "test/test_statement.rb",
64
- "test/test_active_record.rb",
65
- "test/test_database_queries_utf_16.rb",
66
- "test/test_database_initialization.rb",
67
- "test/helper.rb"
68
- ]
69
-
70
- if s.respond_to? :specification_version then
71
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
72
- s.specification_version = 3
73
-
74
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
75
- s.add_runtime_dependency(%q<ffi>, [">= 0.6.0"])
76
- s.add_development_dependency(%q<test-unit>, [">= 2.0"])
77
- s.add_development_dependency(%q<activerecord>, [">= 2.3.5"])
78
- else
79
- s.add_dependency(%q<ffi>, [">= 0.6.0"])
80
- s.add_dependency(%q<test-unit>, [">= 2.0"])
81
- s.add_dependency(%q<activerecord>, [">= 2.3.5"])
82
- end
83
- else
84
- s.add_dependency(%q<ffi>, [">= 0.6.0"])
85
- s.add_dependency(%q<test-unit>, [">= 2.0"])
86
- s.add_dependency(%q<activerecord>, [">= 2.3.5"])
87
- end
88
- end
89
-
Binary file
data/test/helper.rb DELETED
@@ -1,13 +0,0 @@
1
- require "rubygems"
2
- gem "test-unit"
3
- require "test/unit"
4
-
5
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
6
- $LOAD_PATH.unshift(File.dirname(__FILE__))
7
- require "sqlite3"
8
-
9
- class Test::Unit::TestCase
10
- def fixture(filename)
11
- File.join(File.dirname(__FILE__), "fixtures", filename)
12
- end
13
- end
@@ -1,158 +0,0 @@
1
- require "helper"
2
- require "active_record"
3
-
4
- class CreateUsers < ActiveRecord::Migration
5
- def self.up
6
- create_table :users do |t|
7
- t.string :login
8
- t.integer :login_count
9
- t.binary :avatar
10
- t.float :ranking
11
- t.date :birthdate
12
- t.boolean :active
13
- t.datetime :expires_at
14
- t.text :about_me
15
- t.timestamps
16
- end
17
- end
18
-
19
- def self.down
20
- drop_table :users
21
- end
22
- end
23
-
24
- class User < ActiveRecord::Base; end
25
-
26
- class TestActiveRecord < Test::Unit::TestCase
27
- def setup
28
- ActiveRecord::Base.establish_connection(:adapter => "sqlite3", :database => ":memory:")
29
- ActiveRecord::Base.default_timezone = :utc
30
- ActiveRecord::Migration.verbose = false
31
- CreateUsers.migrate(:up)
32
- end
33
-
34
- def test_user_count
35
- assert_equal 0, User.count
36
- end
37
-
38
- def test_user_columns
39
- column_names = User.column_names
40
- assert column_names.include?("id")
41
- assert column_names.include?("login")
42
- assert column_names.include?("login_count")
43
- assert column_names.include?("avatar")
44
- assert column_names.include?("ranking")
45
- assert column_names.include?("birthdate")
46
- assert column_names.include?("active")
47
- assert column_names.include?("expires_at")
48
- assert column_names.include?("about_me")
49
- assert column_names.include?("created_at")
50
- assert column_names.include?("updated_at")
51
- end
52
-
53
- def test_user_create
54
- login = "bob"
55
- avatar = open(fixture("SQLite.gif"), "rb").read
56
- login_count = 0
57
- ranking = 1.0
58
- active = true
59
- birthdate = Date.new(1969, 12, 1)
60
- expires_at = DateTime.new(2100, 12, 1, 12, 54, 22)
61
- about_me = "aboutme" * 500
62
-
63
- User.create!(:login => login,
64
- :login_count => login_count,
65
- :avatar => avatar,
66
- :ranking => ranking,
67
- :active => active,
68
- :birthdate => birthdate,
69
- :expires_at => expires_at,
70
- :about_me => about_me)
71
-
72
- user = User.first
73
-
74
- assert_equal login, user.login
75
- assert_equal login_count, user.login_count
76
- assert_equal avatar, user.avatar
77
- assert_equal ranking, user.ranking
78
- assert_equal active, user.active
79
- assert_equal birthdate, user.birthdate
80
- assert_equal expires_at, user.expires_at
81
- assert_equal about_me, user.about_me
82
- end
83
-
84
- def test_user_update
85
- User.create!(:login => "bob")
86
- user = User.first
87
- assert_equal "bob", user.login
88
- user.update_attributes(:login => "alice")
89
- user = User.first
90
- assert_equal "alice", user.login
91
- end
92
-
93
- def test_user_delete
94
- User.create!(:login => "bob")
95
- user = User.first
96
- assert_equal "bob", user.login
97
- user.destroy
98
- assert_equal 0, User.count
99
- end
100
-
101
- def test_user_dirty_attributes
102
- User.create!(:login => "bob")
103
- user = User.first
104
- assert_equal "bob", user.login
105
- user.login = "alice"
106
- assert user.login_changed?
107
- assert_equal "alice", user.login
108
- assert_equal "bob", user.login_was
109
- end
110
-
111
- def test_transaction_commit
112
- User.transaction do
113
- User.create!
114
- end
115
- assert_equal 1, User.count
116
- end
117
-
118
- def test_transaction_rollback
119
- User.transaction do
120
- User.create!
121
- raise ActiveRecord::Rollback
122
- end
123
- assert_equal 0, User.count
124
- end
125
-
126
- def test_reload
127
- User.create!(:login => "bob")
128
- user = User.first
129
- assert_equal "bob", user.login
130
- user.login = "alice"
131
- assert_equal "alice", user.login
132
- user.reload
133
- assert_equal "bob", user.login
134
- end
135
-
136
- def test_save
137
- user = User.new(:login => "alice")
138
- user.save
139
- assert_equal 1, User.count
140
- end
141
-
142
- def test_save_with_bang
143
- user = User.new(:login => "alice")
144
- user.save!
145
- assert_equal 1, User.count
146
- end
147
-
148
- def test_attribute_assignment
149
- user = User.new
150
- avatar = open(fixture("SQLite.gif"), "rb").read
151
- user.avatar = avatar
152
- user.avatar = nil
153
- user.save!
154
- user.avatar = avatar
155
- user.reload
156
- assert_equal 1, User.count
157
- end
158
- end
@@ -1,51 +0,0 @@
1
- require "helper"
2
-
3
- class TestDatabaseInitialization < Test::Unit::TestCase
4
- def setup
5
- @db_filename = "test_database.db"
6
- File.delete(@db_filename) if File.exists?(@db_filename)
7
- @db = SQLite3::Database.new(@db_filename)
8
- end
9
-
10
- def teardown
11
- File.delete(@db_filename) if File.exists?(@db_filename)
12
- end
13
-
14
- def test_database_file_exists
15
- assert File.exists?(@db_filename)
16
- end
17
-
18
- def test_database_opened
19
- assert_false @db.closed?
20
- end
21
-
22
- def test_database_closing
23
- @db.close
24
- assert @db.closed?
25
- end
26
-
27
- def test_encoding_conversion_from_utf_16_to_utf_8
28
- expected_string = "test"
29
- db_filename = "test_database_encoding.db"
30
- File.delete(db_filename) if File.exists?(db_filename)
31
- db = SQLite3::Database.new(db_filename, :encoding => "utf-16le")
32
- db.execute("CREATE TABLE t1(t TEXT)")
33
- db.execute("INSERT INTO t1 VALUES (?)", expected_string.encode(Encoding::UTF_8))
34
- db.execute("INSERT INTO t1 VALUES (?)", expected_string.encode(Encoding::UTF_16LE))
35
- rows = db.execute("SELECT * FROM t1")
36
- assert_equal 2, rows.size
37
- assert_equal expected_string.encode(Encoding::UTF_16LE), rows[0][0]
38
- assert_equal Encoding::UTF_16LE, rows[0][0].encoding
39
- assert_equal expected_string.encode(Encoding::UTF_16LE), rows[1][0]
40
- assert_equal Encoding::UTF_16LE, rows[1][0].encoding
41
- db.close
42
- db = SQLite3::Database.new(db_filename)
43
- rows = db.execute("SELECT * FROM t1")
44
- assert_equal 2, rows.size
45
- assert_equal expected_string, rows[0][0]
46
- assert_equal Encoding::UTF_8, rows[0][0].encoding
47
- assert_equal expected_string, rows[1][0]
48
- assert_equal Encoding::UTF_8, rows[1][0].encoding
49
- File.delete(db_filename) if File.exists?(db_filename)
50
- end
51
- end
@@ -1,80 +0,0 @@
1
- require "helper"
2
-
3
- class TestDatabaseQueriesUtf16 < Test::Unit::TestCase
4
- def setup
5
- @db = SQLite3::Database.new(":memory:", :encoding => "utf-16")
6
- @db.execute("CREATE TABLE t1(id INTEGER PRIMARY KEY ASC, t TEXT, nu1 NUMERIC, i1 INTEGER, i2 INTEGER, no BLOB)")
7
- end
8
-
9
- def teardown
10
- @db.close
11
- end
12
-
13
- def test_tables_empty
14
- assert_equal [], @db.execute("SELECT * FROM t1")
15
- end
16
-
17
- def test_execute
18
- @db.execute("INSERT INTO t1 VALUES(NULL, 'text1', 1.22, 42, 4294967296, NULL)")
19
- rows = @db.execute("SELECT * FROM t1")
20
- assert_equal 1, rows.size
21
- row = rows[0]
22
- assert_equal "text1".encode(Encoding::UTF_16LE), row[1]
23
- assert_equal Encoding::UTF_16LE, row[1].encoding
24
- assert_equal 1.22, row[2]
25
- assert_equal 42, row[3]
26
- assert_equal 4294967296, row[4]
27
- assert_nil row[5]
28
- end
29
-
30
- def test_execute_with_bindings
31
- blob = open("test/fixtures/SQLite.gif", "rb").read
32
- @db.execute("INSERT INTO t1 VALUES(?, ?, ?, ?, ?, ?)", nil, "text1", 1.22, 42, 4294967296, blob)
33
- rows = @db.execute("SELECT * FROM t1")
34
- assert_equal 1, rows.size
35
- row = rows[0]
36
- assert_equal "text1".encode(Encoding::UTF_16LE), row[1]
37
- assert_equal Encoding::UTF_16LE, row[1].encoding
38
- assert_equal 1.22, row[2]
39
- assert_equal 42, row[3]
40
- assert_equal 4294967296, row[4]
41
- assert_equal blob, row[5]
42
- assert_equal Encoding::ASCII_8BIT, row[5].encoding
43
- end
44
-
45
- def test_execute_with_different_encodings
46
- expected_string = "text1"
47
- @db.execute("INSERT INTO t1 VALUES(NULL, ?, NULL, NULL, NULL, NULL)", expected_string.encode(Encoding::ASCII_8BIT))
48
- @db.execute("INSERT INTO t1 VALUES(NULL, ?, NULL, NULL, NULL, NULL)", expected_string.encode(Encoding::UTF_8))
49
- @db.execute("INSERT INTO t1 VALUES(NULL, ?, NULL, NULL, NULL, NULL)", expected_string.encode(Encoding::UTF_16LE))
50
- @db.execute("INSERT INTO t1 VALUES(NULL, ?, NULL, NULL, NULL, NULL)", expected_string.encode(Encoding::UTF_16BE))
51
- rows = @db.execute("SELECT * FROM t1")
52
- assert_equal 4, rows.size
53
- assert_equal expected_string, rows[0][1]
54
- assert_equal expected_string.encode(Encoding::UTF_16LE), rows[1][1]
55
- assert_equal expected_string.encode(Encoding::UTF_16LE), rows[2][1]
56
- assert_equal expected_string.encode(Encoding::UTF_16LE), rows[3][1]
57
- assert_equal Encoding::ASCII_8BIT, rows[0][1].encoding
58
- assert_equal Encoding::UTF_16LE, rows[1][1].encoding
59
- assert_equal Encoding::UTF_16LE, rows[2][1].encoding
60
- assert_equal Encoding::UTF_16LE, rows[3][1].encoding
61
- end
62
-
63
- def test_execute_with_bad_query
64
- assert_raise(SQLite3::SQLException) { @db.execute("bad query") }
65
- assert_equal %Q{near "bad": syntax error}, @db.errmsg
66
- assert_equal 1, @db.errcode
67
- end
68
-
69
- def test_last_insert_row_id
70
- @db.execute("INSERT INTO t1 VALUES(NULL, NULL, NULL, NULL, NULL, NULL)")
71
- id = @db.last_insert_row_id
72
- rows = @db.execute("SELECT * FROM t1 WHERE id = #{id}")
73
- assert_equal 1, rows.size
74
- end
75
-
76
- # def test_execute_with_closed_database
77
- # @db.close
78
- # @db.execute("SELECT * FROM t1")
79
- # end
80
- end
@@ -1,80 +0,0 @@
1
- require "helper"
2
-
3
- class TestDatabaseQueriesUtf8 < Test::Unit::TestCase
4
- def setup
5
- @db = SQLite3::Database.new(":memory:")
6
- @db.execute("CREATE TABLE t1(id INTEGER PRIMARY KEY ASC, t TEXT, nu1 NUMERIC, i1 INTEGER, i2 INTEGER, no BLOB)")
7
- end
8
-
9
- def teardown
10
- @db.close
11
- end
12
-
13
- def test_tables_empty
14
- assert_equal [], @db.execute("SELECT * FROM t1")
15
- end
16
-
17
- def test_execute
18
- @db.execute("INSERT INTO t1 VALUES(NULL, 'text1', 1.22, 42, 4294967296, NULL)")
19
- rows = @db.execute("SELECT * FROM t1")
20
- assert_equal 1, rows.size
21
- row = rows[0]
22
- assert_equal "text1", row[1]
23
- assert_equal Encoding::UTF_8, row[1].encoding
24
- assert_equal 1.22, row[2]
25
- assert_equal 42, row[3]
26
- assert_equal 4294967296, row[4]
27
- assert_nil row[5]
28
- end
29
-
30
- def test_execute_with_bindings
31
- blob = open("test/fixtures/SQLite.gif", "rb").read
32
- @db.execute("INSERT INTO t1 VALUES(?, ?, ?, ?, ?, ?)", nil, "text1", 1.22, 42, 4294967296, blob)
33
- rows = @db.execute("SELECT * FROM t1")
34
- assert_equal 1, rows.size
35
- row = rows[0]
36
- assert_equal "text1", row[1]
37
- assert_equal Encoding::UTF_8, row[1].encoding
38
- assert_equal 1.22, row[2]
39
- assert_equal 42, row[3]
40
- assert_equal 4294967296, row[4]
41
- assert_equal blob, row[5]
42
- assert_equal Encoding::ASCII_8BIT, row[5].encoding
43
- end
44
-
45
- def test_execute_with_different_encodings
46
- expected_string = "text1"
47
- @db.execute("INSERT INTO t1 VALUES(NULL, ?, NULL, NULL, NULL, NULL)", expected_string.encode(Encoding::ASCII_8BIT))
48
- @db.execute("INSERT INTO t1 VALUES(NULL, ?, NULL, NULL, NULL, NULL)", expected_string.encode(Encoding::UTF_8))
49
- @db.execute("INSERT INTO t1 VALUES(NULL, ?, NULL, NULL, NULL, NULL)", expected_string.encode(Encoding::UTF_16LE))
50
- @db.execute("INSERT INTO t1 VALUES(NULL, ?, NULL, NULL, NULL, NULL)", expected_string.encode(Encoding::UTF_16BE))
51
- rows = @db.execute("SELECT * FROM t1")
52
- assert_equal 4, rows.size
53
- assert_equal expected_string, rows[0][1]
54
- assert_equal expected_string, rows[1][1]
55
- assert_equal expected_string, rows[2][1]
56
- assert_equal expected_string, rows[3][1]
57
- assert_equal Encoding::ASCII_8BIT, rows[0][1].encoding
58
- assert_equal Encoding::UTF_8, rows[1][1].encoding
59
- assert_equal Encoding::UTF_8, rows[2][1].encoding
60
- assert_equal Encoding::UTF_8, rows[3][1].encoding
61
- end
62
-
63
- def test_execute_with_bad_query
64
- assert_raise(SQLite3::SQLException) { @db.execute("bad query") }
65
- assert_equal %Q{near "bad": syntax error}, @db.errmsg
66
- assert_equal 1, @db.errcode
67
- end
68
-
69
- def test_last_insert_row_id
70
- @db.execute("INSERT INTO t1 VALUES(NULL, NULL, NULL, NULL, NULL, NULL)")
71
- id = @db.last_insert_row_id
72
- rows = @db.execute("SELECT * FROM t1 WHERE id = #{id}")
73
- assert_equal 1, rows.size
74
- end
75
-
76
- # def test_execute_with_closed_database
77
- # @db.close
78
- # @db.execute("SELECT * FROM t1")
79
- # end
80
- end
@@ -1,42 +0,0 @@
1
- require "helper"
2
-
3
- class TestStatement < Test::Unit::TestCase
4
- def setup
5
- @db = SQLite3::Database.new(":memory:")
6
- @db.execute("CREATE TABLE t1(id INTEGER PRIMARY KEY ASC, t TEXT, nu1 NUMERIC, i1 INTEGER, i2 INTEGER, no BLOB)")
7
- @statement = @db.prepare("INSERT INTO t1 VALUES(:ID, :T, :NU1, :I1, :I2, :NO)")
8
- end
9
-
10
- def teardown
11
- @statement.close
12
- @db.close
13
- end
14
-
15
- test "bind param by name" do
16
- @statement.bind_param("T", "test")
17
- end
18
-
19
-
20
- test "bind param by name with colon" do
21
- @statement.bind_param(":T", "test")
22
- end
23
-
24
- test "bind param by number" do
25
- @statement.bind_param(1, "test")
26
- end
27
-
28
- test "bind non existing param name" do
29
- assert_raises(SQLite3::Exception) { @statement.bind_param(":NONEXISTING", "test") }
30
- end
31
-
32
- test "execute statement" do
33
- @statement.execute
34
- end
35
-
36
- test "execute statement multiple times" do
37
- @statement.bind_param("T", "test")
38
- @statement.execute
39
- @statement.bind_param("NU1", 500)
40
- @statement.execute
41
- end
42
- end