sequel 0.0.13 → 0.0.14
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +10 -0
- data/Rakefile +1 -1
- data/lib/sequel/dataset.rb +4 -4
- data/lib/sequel/model.rb +30 -12
- metadata +1 -2
data/CHANGELOG
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
*0.0.14*
|
2
|
+
|
3
|
+
* Added Model#id to to return the id column.
|
4
|
+
|
5
|
+
* Fixed Model's attribute accessors (hopefully for the last time).
|
6
|
+
|
7
|
+
* Changed Model.db and Model.db= to allow different databases for different model classes.
|
8
|
+
|
9
|
+
* Fixed bug in aggregate methods (max, min, etc) for datasets using record classes.
|
10
|
+
|
1
11
|
*0.0.13*
|
2
12
|
|
3
13
|
* Fixed Model#method_missing to do both find, filter and attribute accessors. duh.
|
data/Rakefile
CHANGED
@@ -6,7 +6,7 @@ require 'fileutils'
|
|
6
6
|
include FileUtils
|
7
7
|
|
8
8
|
NAME = "sequel"
|
9
|
-
VERS = "0.0.
|
9
|
+
VERS = "0.0.14"
|
10
10
|
CLEAN.include ['**/.*.sw?', 'pkg/*', '.config', 'doc/*', 'coverage/*']
|
11
11
|
RDOC_OPTS = ['--quiet', '--title', "Sequel: Concise ORM for Ruby",
|
12
12
|
"--opname", "index.html",
|
data/lib/sequel/dataset.rb
CHANGED
@@ -365,19 +365,19 @@ module Sequel
|
|
365
365
|
|
366
366
|
# aggregates
|
367
367
|
def min(field)
|
368
|
-
select(field.MIN).first.values.first
|
368
|
+
select(field.MIN).naked.first.values.first
|
369
369
|
end
|
370
370
|
|
371
371
|
def max(field)
|
372
|
-
select(field.MAX).first.values.first
|
372
|
+
select(field.MAX).naked.first.values.first
|
373
373
|
end
|
374
374
|
|
375
375
|
def sum(field)
|
376
|
-
select(field.SUM).first.values.first
|
376
|
+
select(field.SUM).naked.first.values.first
|
377
377
|
end
|
378
378
|
|
379
379
|
def avg(field)
|
380
|
-
select(field.AVG).first.values.first
|
380
|
+
select(field.AVG).naked.first.values.first
|
381
381
|
end
|
382
382
|
|
383
383
|
EXISTS_EXPR = "EXISTS (%s)".freeze
|
data/lib/sequel/model.rb
CHANGED
@@ -4,11 +4,13 @@ module Sequel
|
|
4
4
|
class Model
|
5
5
|
@@db = nil
|
6
6
|
|
7
|
-
def self.db
|
8
|
-
|
7
|
+
def self.db
|
8
|
+
@db ||= ((superclass != Object) && (superclass.db)) || nil
|
9
|
+
end
|
10
|
+
def self.db=(db); @db = db; end
|
9
11
|
|
10
12
|
def self.table_name
|
11
|
-
@table_name
|
13
|
+
@table_name ||= ((superclass != Model) && (superclass.table_name)) || nil
|
12
14
|
end
|
13
15
|
def self.set_table_name(t); @table_name = t; end
|
14
16
|
|
@@ -23,7 +25,12 @@ module Sequel
|
|
23
25
|
@dataset.record_class = self
|
24
26
|
@dataset
|
25
27
|
end
|
26
|
-
|
28
|
+
|
29
|
+
def self.set_dataset(ds)
|
30
|
+
@db = ds.db
|
31
|
+
@dataset = ds
|
32
|
+
@dataset.record_class = self
|
33
|
+
end
|
27
34
|
|
28
35
|
def self.cache_by(column, expiration)
|
29
36
|
@cache_column = column
|
@@ -195,7 +202,6 @@ module Sequel
|
|
195
202
|
|
196
203
|
FIND_BY_REGEXP = /^find_by_(.*)/.freeze
|
197
204
|
FILTER_BY_REGEXP = /^filter_by_(.*)/.freeze
|
198
|
-
WRITE_ATTR_REGEXP = /(.*)=$/.freeze
|
199
205
|
|
200
206
|
def self.method_missing(m, *args)
|
201
207
|
Thread.exclusive do
|
@@ -208,15 +214,11 @@ module Sequel
|
|
208
214
|
c = $1
|
209
215
|
meta_def(method_name) {|arg| filter(c => arg)}
|
210
216
|
send(m, *args) if respond_to?(m)
|
211
|
-
elsif method_name =~ WRITE_ATTR_REGEXP
|
212
|
-
self[$1.to_sym] = value
|
213
|
-
else
|
214
|
-
self[m]
|
215
217
|
end
|
216
218
|
end
|
217
219
|
end
|
218
220
|
|
219
|
-
def db;
|
221
|
+
def db; self.class.db; end
|
220
222
|
|
221
223
|
def reload
|
222
224
|
temp = self.class[@pkey]
|
@@ -227,6 +229,16 @@ module Sequel
|
|
227
229
|
|
228
230
|
def []=(field, value); @values[field] = value; end
|
229
231
|
|
232
|
+
WRITE_ATTR_REGEXP = /(.*)=$/.freeze
|
233
|
+
|
234
|
+
def method_missing(m, value = nil)
|
235
|
+
if m.to_s =~ WRITE_ATTR_REGEXP
|
236
|
+
self[$1.to_sym] = value
|
237
|
+
else
|
238
|
+
self[m]
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
230
242
|
def save
|
231
243
|
if @pkey
|
232
244
|
model.dataset.filter(primary_key => @pkey).update(@values)
|
@@ -246,9 +258,15 @@ module Sequel
|
|
246
258
|
end
|
247
259
|
end
|
248
260
|
|
249
|
-
def self.Model(
|
261
|
+
def self.Model(table)
|
250
262
|
Class.new(Sequel::Model) do
|
251
|
-
meta_def(:inherited)
|
263
|
+
meta_def(:inherited) do |c|
|
264
|
+
if table.is_a?(Dataset)
|
265
|
+
c.set_dataset(table)
|
266
|
+
else
|
267
|
+
c.set_table_name(table)
|
268
|
+
end
|
269
|
+
end
|
252
270
|
end
|
253
271
|
end
|
254
272
|
end
|
metadata
CHANGED
@@ -3,7 +3,7 @@ rubygems_version: 0.9.2
|
|
3
3
|
specification_version: 1
|
4
4
|
name: sequel
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.0.
|
6
|
+
version: 0.0.14
|
7
7
|
date: 2007-03-28 00:00:00 +02:00
|
8
8
|
summary: Concise ORM for Ruby.
|
9
9
|
require_paths:
|
@@ -33,7 +33,6 @@ files:
|
|
33
33
|
- README
|
34
34
|
- Rakefile
|
35
35
|
- bin/sequel
|
36
|
-
- doc/rdoc
|
37
36
|
- lib/sequel
|
38
37
|
- lib/sequel.rb
|
39
38
|
- lib/sequel/dataset.rb
|