sequel 0.4.4.1 → 0.4.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/CHANGELOG +10 -0
  2. data/Rakefile +161 -159
  3. data/lib/sequel.rb +14 -10
  4. data/lib/sequel/adapters/adapter_skeleton.rb +2 -1
  5. data/lib/sequel/adapters/ado.rb +2 -1
  6. data/lib/sequel/adapters/db2.rb +5 -3
  7. data/lib/sequel/adapters/dbi.rb +2 -1
  8. data/lib/sequel/adapters/informix.rb +2 -1
  9. data/lib/sequel/adapters/jdbc.rb +3 -2
  10. data/lib/sequel/adapters/mysql.rb +268 -264
  11. data/lib/sequel/adapters/odbc.rb +7 -2
  12. data/lib/sequel/adapters/odbc_mssql.rb +1 -1
  13. data/lib/sequel/adapters/openbase.rb +2 -1
  14. data/lib/sequel/adapters/oracle.rb +2 -1
  15. data/lib/sequel/adapters/postgres.rb +32 -16
  16. data/lib/sequel/adapters/sqlite.rb +7 -6
  17. data/lib/sequel/array_keys.rb +295 -295
  18. data/lib/sequel/connection_pool.rb +1 -1
  19. data/lib/sequel/core_sql.rb +14 -5
  20. data/lib/sequel/database.rb +4 -4
  21. data/lib/sequel/dataset.rb +12 -10
  22. data/lib/sequel/dataset/convenience.rb +10 -8
  23. data/lib/sequel/dataset/sequelizer.rb +19 -16
  24. data/lib/sequel/dataset/sql.rb +43 -30
  25. data/lib/sequel/exceptions.rb +45 -0
  26. data/lib/sequel/migration.rb +7 -5
  27. data/lib/sequel/model.rb +1 -1
  28. data/lib/sequel/model/base.rb +3 -3
  29. data/lib/sequel/model/hooks.rb +0 -4
  30. data/lib/sequel/model/record.rb +9 -9
  31. data/lib/sequel/model/relations.rb +2 -2
  32. data/lib/sequel/pretty_table.rb +6 -3
  33. data/lib/sequel/schema/schema_sql.rb +11 -6
  34. data/lib/sequel/worker.rb +8 -7
  35. data/spec/adapters/sqlite_spec.rb +3 -3
  36. data/spec/array_keys_spec.rb +543 -543
  37. data/spec/connection_pool_spec.rb +6 -3
  38. data/spec/database_spec.rb +4 -4
  39. data/spec/dataset_spec.rb +25 -25
  40. data/spec/migration_spec.rb +1 -1
  41. data/spec/model_spec.rb +16 -16
  42. data/spec/sequelizer_spec.rb +7 -7
  43. data/spec/spec.opts +8 -0
  44. metadata +5 -5
  45. data/lib/sequel/error.rb +0 -22
data/CHANGELOG CHANGED
@@ -1,3 +1,13 @@
1
+ === 0.4.4.2 (2007-12-20)
2
+
3
+ * Fixed parsing errors in Ruby 1.9.
4
+
5
+ * Fixed sync problem in connection_pool_spec.
6
+
7
+ * Changed String#to_time to raise Error::InvalidValue if Time.parse fails.
8
+
9
+ * Refactored sequel error classes.
10
+
1
11
  === 0.4.4.1 (2007-12-19)
2
12
 
3
13
  * Fixed schema generation code to use fied quoting and support adapter-specific literalization of default values (#108).
data/Rakefile CHANGED
@@ -1,159 +1,161 @@
1
- require 'rake'
2
- require 'rake/clean'
3
- require 'rake/gempackagetask'
4
- require 'rake/rdoctask'
5
- require 'fileutils'
6
- include FileUtils
7
-
8
- NAME = "sequel"
9
- VERS = "0.4.4.1"
10
- CLEAN.include ['**/.*.sw?', 'pkg/*', '.config', 'doc/*', 'coverage/*']
11
- RDOC_OPTS = ['--quiet', '--title', "Sequel: Concise ORM for Ruby",
12
- "--opname", "index.html",
13
- "--line-numbers",
14
- "--main", "README",
15
- "--inline-source"]
16
-
17
- desc "Packages up Sequel."
18
- task :default => [:package]
19
- task :package => [:clean]
20
-
21
- task :doc => [:rdoc]
22
-
23
- Rake::RDocTask.new do |rdoc|
24
- rdoc.rdoc_dir = 'doc/rdoc'
25
- rdoc.options += RDOC_OPTS
26
- rdoc.main = "README"
27
- rdoc.title = "Sequel: Lightweight ORM library for Ruby"
28
- rdoc.rdoc_files.add ['README', 'COPYING', 'lib/sequel.rb', 'lib/**/*.rb']
29
- end
30
-
31
- spec = Gem::Specification.new do |s|
32
- s.name = NAME
33
- s.version = VERS
34
- s.platform = Gem::Platform::RUBY
35
- s.has_rdoc = true
36
- s.extra_rdoc_files = ["README", "CHANGELOG", "COPYING"]
37
- s.rdoc_options += RDOC_OPTS +
38
- ['--exclude', '^(examples|extras)\/', '--exclude', 'lib/sequel.rb']
39
- s.summary = "Lightweight ORM library for Ruby"
40
- s.description = s.summary
41
- s.author = "Sharon Rosner"
42
- s.email = 'ciconia@gmail.com'
43
- s.homepage = 'http://sequel.rubyforge.org'
44
- s.executables = ['sequel']
45
-
46
- s.add_dependency('metaid')
47
- s.add_dependency('ParseTree', '>= 2.0.0')
48
- s.add_dependency('ruby2ruby')
49
-
50
- s.required_ruby_version = '>= 1.8.4'
51
-
52
- s.files = %w(COPYING README Rakefile) + Dir.glob("{bin,doc,spec,lib}/**/*")
53
-
54
- s.require_path = "lib"
55
- s.bindir = "bin"
56
- end
57
-
58
- win_spec = Gem::Specification.new do |s|
59
- s.name = NAME
60
- s.version = VERS
61
- s.platform = Gem::Platform::WIN32
62
- s.has_rdoc = true
63
- s.extra_rdoc_files = ["README", "CHANGELOG", "COPYING"]
64
- s.rdoc_options += RDOC_OPTS +
65
- ['--exclude', '^(examples|extras)\/', '--exclude', 'lib/sequel.rb']
66
- s.summary = "Lightweight ORM library for Ruby"
67
- s.description = s.summary
68
- s.author = "Sharon Rosner"
69
- s.email = 'ciconia@gmail.com'
70
- s.homepage = 'http://sequel.rubyforge.org'
71
- s.executables = ['sequel']
72
-
73
- s.add_dependency('metaid')
74
-
75
- s.required_ruby_version = '>= 1.8.4'
76
-
77
- s.files = %w(COPYING README Rakefile) + Dir.glob("{bin,doc,spec,lib}/**/*")
78
-
79
- s.require_path = "lib"
80
- s.bindir = "bin"
81
- end
82
-
83
- Rake::GemPackageTask.new(spec) do |p|
84
- p.need_tar = true
85
- p.gem_spec = spec
86
- end
87
-
88
- Rake::GemPackageTask.new(win_spec) do |p|
89
- p.need_tar = true
90
- p.gem_spec = win_spec
91
- end
92
-
93
- task :install do
94
- sh %{rake package}
95
- sh %{sudo gem install pkg/#{NAME}-#{VERS}}
96
- end
97
-
98
- task :install_no_docs do
99
- sh %{rake package}
100
- sh %{sudo gem install pkg/#{NAME}-#{VERS} --no-rdoc --no-ri}
101
- end
102
-
103
- task :uninstall => [:clean] do
104
- sh %{sudo gem uninstall #{NAME}}
105
- end
106
-
107
- task :release => [:package] do
108
- sh %{rubyforge login}
109
- sh %{rubyforge add_release sequel sequel #{VERS} pkg/sequel-#{VERS}.tgz}
110
- sh %{rubyforge add_file sequel sequel #{VERS} pkg/sequel-#{VERS}.gem}
111
- sh %{rubyforge add_file sequel sequel #{VERS} pkg/sequel-#{VERS}-x86-mswin32-60.gem}
112
- end
113
-
114
- desc 'Update docs and upload to rubyforge.org'
115
- task :doc_rforge do
116
- sh %{rake doc}
117
- sh %{scp -r doc/rdoc/* ciconia@rubyforge.org:/var/www/gforge-projects/sequel}
118
- end
119
-
120
- require 'spec/rake/spectask'
121
-
122
- desc "Run specs with coverage"
123
- Spec::Rake::SpecTask.new('spec') do |t|
124
- t.spec_files = FileList['spec/*_spec.rb']
125
- t.rcov = true
126
- end
127
-
128
- desc "Run specs without coverage"
129
- Spec::Rake::SpecTask.new('spec_no_cov') do |t|
130
- t.spec_files = FileList['spec/*_spec.rb']
131
- end
132
-
133
- desc "Run adapter specs without coverage"
134
- Spec::Rake::SpecTask.new('spec_adapters') do |t|
135
- t.spec_files = FileList['spec/adapters/*_spec.rb']
136
- end
137
-
138
- desc "Run all specs with coverage"
139
- Spec::Rake::SpecTask.new('spec_all') do |t|
140
- t.spec_files = FileList['spec/*_spec.rb', 'spec/adapters/*_spec.rb']
141
- t.rcov = true
142
- end
143
-
144
- ##############################################################################
145
- # Statistics
146
- ##############################################################################
147
-
148
- STATS_DIRECTORIES = [
149
- %w(Code lib/),
150
- %w(Spec spec/)
151
- ].collect { |name, dir| [ name, "./#{dir}" ] }.select { |name, dir| File.directory?(dir) }
152
-
153
- desc "Report code statistics (KLOCs, etc) from the application"
154
- task :stats do
155
- require 'extra/stats'
156
- verbose = true
157
- CodeStatistics.new(*STATS_DIRECTORIES).to_s
158
- end
159
-
1
+ require "rake"
2
+ require "rake/clean"
3
+ require "rake/gempackagetask"
4
+ require "rake/rdoctask"
5
+ require "fileutils"
6
+ include FileUtils
7
+
8
+ NAME = "sequel"
9
+ VERS = "0.4.4.2"
10
+ CLEAN.include ["**/.*.sw?", "pkg/*", ".config", "doc/*", "coverage/*"]
11
+ RDOC_OPTS = ["--quiet", "--title", "Sequel: Concise ORM for Ruby",
12
+ "--opname", "index.html",
13
+ "--line-numbers",
14
+ "--main", "README",
15
+ "--inline-source"]
16
+
17
+ desc "Packages up Sequel."
18
+ task :default => [:package]
19
+ task :package => [:clean]
20
+
21
+ task :doc => [:rdoc]
22
+
23
+ Rake::RDocTask.new do |rdoc|
24
+ rdoc.rdoc_dir = "doc/rdoc"
25
+ rdoc.options += RDOC_OPTS
26
+ rdoc.main = "README"
27
+ rdoc.title = "Sequel: Lightweight ORM library for Ruby"
28
+ rdoc.rdoc_files.add ["README", "COPYING", "lib/sequel.rb", "lib/**/*.rb"]
29
+ end
30
+
31
+ spec = Gem::Specification.new do |s|
32
+ s.name = NAME
33
+ s.version = VERS
34
+ s.platform = Gem::Platform::RUBY
35
+ s.has_rdoc = true
36
+ s.extra_rdoc_files = ["README", "CHANGELOG", "COPYING"]
37
+ s.rdoc_options += RDOC_OPTS +
38
+ ["--exclude", "^(examples|extras)\/", "--exclude", "lib/sequel.rb"]
39
+ s.summary = "Lightweight ORM library for Ruby"
40
+ s.description = s.summary
41
+ s.author = "Sharon Rosner"
42
+ s.email = "ciconia@gmail.com"
43
+ s.homepage = "http://sequel.rubyforge.org"
44
+ s.executables = ["sequel"]
45
+
46
+ s.add_dependency("metaid")
47
+ s.add_dependency("ParseTree", ">= 2.0.0")
48
+ s.add_dependency("ruby2ruby")
49
+
50
+ s.required_ruby_version = ">= 1.8.4"
51
+
52
+ s.files = %w(COPYING README Rakefile) + Dir.glob("{bin,doc,spec,lib}/**/*")
53
+
54
+ s.require_path = "lib"
55
+ s.bindir = "bin"
56
+ end
57
+
58
+ win_spec = Gem::Specification.new do |s|
59
+ s.name = NAME
60
+ s.version = VERS
61
+ s.platform = Gem::Platform::WIN32
62
+ s.has_rdoc = true
63
+ s.extra_rdoc_files = ["README", "CHANGELOG", "COPYING"]
64
+ s.rdoc_options += RDOC_OPTS +
65
+ ["--exclude", "^(examples|extras)\/", "--exclude", "lib/sequel.rb"]
66
+ s.summary = "Lightweight ORM library for Ruby"
67
+ s.description = s.summary
68
+ s.author = "Sharon Rosner"
69
+ s.email = "ciconia@gmail.com"
70
+ s.homepage = "http://sequel.rubyforge.org"
71
+ s.executables = ["sequel"]
72
+
73
+ s.add_dependency("metaid")
74
+
75
+ s.required_ruby_version = ">= 1.8.4"
76
+
77
+ s.files = %w(COPYING README Rakefile) + Dir.glob("{bin,doc,spec,lib}/**/*")
78
+
79
+ s.require_path = "lib"
80
+ s.bindir = "bin"
81
+ end
82
+
83
+ Rake::GemPackageTask.new(spec) do |p|
84
+ p.need_tar = true
85
+ p.gem_spec = spec
86
+ end
87
+
88
+ Rake::GemPackageTask.new(win_spec) do |p|
89
+ p.need_tar = true
90
+ p.gem_spec = win_spec
91
+ end
92
+
93
+ task :install do
94
+ sh %{rake package}
95
+ sh %{sudo gem install pkg/#{NAME}-#{VERS}}
96
+ end
97
+
98
+ task :install_no_docs do
99
+ sh %{rake package}
100
+ sh %{sudo gem install pkg/#{NAME}-#{VERS} --no-rdoc --no-ri}
101
+ end
102
+
103
+ task :uninstall => [:clean] do
104
+ sh %{sudo gem uninstall #{NAME}}
105
+ end
106
+
107
+ task :release => [:package] do
108
+ sh %{rubyforge login}
109
+ sh %{rubyforge add_release sequel sequel #{VERS} pkg/sequel-#{VERS}.tgz}
110
+ sh %{rubyforge add_file sequel sequel #{VERS} pkg/sequel-#{VERS}.gem}
111
+ sh %{rubyforge add_file sequel sequel #{VERS} pkg/sequel-#{VERS}-x86-mswin32-60.gem}
112
+ end
113
+
114
+ desc "Update docs and upload to rubyforge.org"
115
+ task :doc_rforge do
116
+ sh %{rake doc}
117
+ sh %{scp -r doc/rdoc/* ciconia@rubyforge.org:/var/www/gforge-projects/sequel}
118
+ end
119
+
120
+ require "spec/rake/spectask"
121
+
122
+ desc "Run specs with coverage"
123
+ Spec::Rake::SpecTask.new("spec") do |t|
124
+ t.spec_files = FileList["spec/*_spec.rb"]
125
+ t.rcov_opts = ["--exclude", "gems", "--exclude", "spec"]
126
+ t.rcov = true
127
+ end
128
+
129
+ desc "Run specs without coverage"
130
+ Spec::Rake::SpecTask.new("spec_no_cov") do |t|
131
+ t.spec_files = FileList["spec/*_spec.rb"]
132
+ end
133
+
134
+ desc "Run adapter specs without coverage"
135
+ Spec::Rake::SpecTask.new("spec_adapters") do |t|
136
+ t.spec_files = FileList["spec/adapters/*_spec.rb"]
137
+ end
138
+
139
+ desc "Run all specs with coverage"
140
+ Spec::Rake::SpecTask.new("spec_all") do |t|
141
+ t.spec_files = FileList["spec/*_spec.rb", "spec/adapters/*_spec.rb"]
142
+ t.rcov_opts = ["--exclude", "gems", "--exclude", "spec"]
143
+ t.rcov = true
144
+ end
145
+
146
+ ##############################################################################
147
+ # Statistics
148
+ ##############################################################################
149
+
150
+ STATS_DIRECTORIES = [
151
+ %w(Code lib/),
152
+ %w(Spec spec/)
153
+ ].collect { |name, dir| [ name, "./#{dir}" ] }.select { |name, dir| File.directory?(dir) }
154
+
155
+ desc "Report code statistics (KLOCs, etc) from the application"
156
+ task :stats do
157
+ require "extra/stats"
158
+ verbose = true
159
+ CodeStatistics.new(*STATS_DIRECTORIES).to_s
160
+ end
161
+
data/lib/sequel.rb CHANGED
@@ -1,12 +1,12 @@
1
- require 'metaid'
2
- require 'bigdecimal'
3
- require 'bigdecimal/util'
1
+ require "metaid"
2
+ require "bigdecimal"
3
+ require "bigdecimal/util"
4
4
 
5
5
  files = %w[
6
- core_ext core_sql array_keys error connection_pool pretty_table
6
+ core_ext core_sql array_keys exceptions connection_pool pretty_table
7
7
  dataset migration model schema database worker
8
8
  ]
9
- dir = File.join(File.dirname(__FILE__), 'sequel')
9
+ dir = File.join(File.dirname(__FILE__), "sequel")
10
10
  files.each {|f| require(File.join(dir, f))}
11
11
 
12
12
  module Sequel #:nodoc:
@@ -32,16 +32,20 @@ module Sequel #:nodoc:
32
32
  def method_missing(m, *args)
33
33
  c = Database.adapter_class(m)
34
34
  begin
35
+ # three ways to invoke this:
36
+ # 0 arguments: Sequel.dbi
37
+ # 1 argument: Sequel.dbi(db_name)
38
+ # more args: Sequel.dbi(db_name, opts)
35
39
  case args.size
36
- when 1: # Sequel.dbi(db_name)
37
- opts = args[0].is_a?(Hash) ? args[0] : {:database => args[0]}
38
- when 0 # Sequel.dbi
40
+ when 0
39
41
  opts = {}
40
- else # Sequel.dbi(db_name, opts)
42
+ when 1
43
+ opts = args[0].is_a?(Hash) ? args[0] : {:database => args[0]}
44
+ else
41
45
  opts = args[1].merge(:database => args[0])
42
46
  end
43
47
  rescue
44
- raise SequelError, "Invalid parameters specified"
48
+ raise Error, "Unknown adapter (#{m})"
45
49
  end
46
50
  c.new(opts)
47
51
  end
@@ -28,7 +28,8 @@ module Sequel
28
28
  class Dataset < Sequel::Dataset
29
29
  def literal(v)
30
30
  case v
31
- when Time: literal(v.iso8601)
31
+ when Time
32
+ literal(v.iso8601)
32
33
  else
33
34
  super
34
35
  end
@@ -46,7 +46,8 @@ module Sequel
46
46
  class Dataset < Sequel::Dataset
47
47
  def literal(v)
48
48
  case v
49
- when Time: literal(v.iso8601)
49
+ when Time
50
+ literal(v.iso8601)
50
51
  else
51
52
  super
52
53
  end
@@ -14,9 +14,10 @@ module Sequel
14
14
 
15
15
  def check_error(rc, msg)
16
16
  case rc
17
- when SQL_SUCCESS, SQL_SUCCESS_WITH_INFO: nil
17
+ when SQL_SUCCESS, SQL_SUCCESS_WITH_INFO
18
+ nil
18
19
  else
19
- raise SequelError, msg
20
+ raise Error, msg
20
21
  end
21
22
  end
22
23
 
@@ -79,7 +80,8 @@ module Sequel
79
80
  class Dataset < Sequel::Dataset
80
81
  def literal(v)
81
82
  case v
82
- when Time: literal(v.iso8601)
83
+ when Time
84
+ literal(v.iso8601)
83
85
  else
84
86
  super
85
87
  end
@@ -70,7 +70,8 @@ module Sequel
70
70
  class Dataset < Sequel::Dataset
71
71
  def literal(v)
72
72
  case v
73
- when Time: literal(v.iso8601)
73
+ when Time
74
+ literal(v.iso8601)
74
75
  else
75
76
  super
76
77
  end
@@ -39,7 +39,8 @@ module Sequel
39
39
  class Dataset < Sequel::Dataset
40
40
  def literal(v)
41
41
  case v
42
- when Time: literal(v.iso8601)
42
+ when Time
43
+ literal(v.iso8601)
43
44
  else
44
45
  super
45
46
  end
@@ -15,7 +15,7 @@ module Sequel
15
15
 
16
16
  def connect
17
17
  unless conn_string = @opts[:uri] || @opts[:url] || @opts[:database]
18
- raise SequelError, "No connection string specified"
18
+ raise Error, "No connection string specified"
19
19
  end
20
20
  unless conn_string =~ /^jdbc:/
21
21
  conn_string = "jdbc:#{conn_string}"
@@ -65,7 +65,8 @@ module Sequel
65
65
  class Dataset < Sequel::Dataset
66
66
  def literal(v)
67
67
  case v
68
- when Time: literal(v.iso8601)
68
+ when Time
69
+ literal(v.iso8601)
69
70
  else
70
71
  super
71
72
  end