sequel_model 0.4 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,3 +1,11 @@
1
+ === 0.4.1 (2008-02-10)
2
+
3
+ * Implemented Model#inspect (#151).
4
+
5
+ * Changed Model#method_missing to short-circuit and bypass checking #columns if the values hash already contains the relevant column (#150).
6
+
7
+ * Updated to reflect changes in sequel_core (Dataset#clone_merge renamed to Dataset#clone).
8
+
1
9
  === 0.4 (2008-02-05)
2
10
 
3
11
  * Fixed Model#set to work with string keys (#143).
data/Rakefile CHANGED
@@ -9,7 +9,7 @@ include FileUtils
9
9
  # Configuration
10
10
  ##############################################################################
11
11
  NAME = "sequel_model"
12
- VERS = "0.4"
12
+ VERS = "0.4.1"
13
13
  CLEAN.include ["**/.*.sw?", "pkg/*", ".config", "doc/*", "coverage/*"]
14
14
  RDOC_OPTS = [
15
15
  "--quiet",
data/lib/sequel_model.rb CHANGED
@@ -1,3 +1,17 @@
1
+ module Sequel
2
+ class Model
3
+ alias_method :model, :class
4
+ end
5
+ end
6
+
7
+ # TODO: add relationships when complete:
8
+ files = %w[
9
+ base hooks record schema relations
10
+ caching plugins validations
11
+ ]
12
+ dir = File.join(File.dirname(__FILE__), "sequel_model")
13
+ files.each {|f| require(File.join(dir, f))}
14
+
1
15
  module Sequel
2
16
  # == Sequel Models
3
17
  #
@@ -225,22 +239,11 @@ module Sequel
225
239
  # Post.create_table! # drops the table if it exists and then recreates it
226
240
  #
227
241
  class Model
228
- alias_method :model, :class
229
- end
230
-
231
- end
232
-
233
- # TODO: add relationships when complete:
234
- files = %w[
235
- base hooks record schema relations
236
- caching plugins validations
237
- ]
238
- dir = File.join(File.dirname(__FILE__), "sequel_model")
239
- files.each {|f| require(File.join(dir, f))}
240
-
241
- module Sequel
242
-
243
- class Model
242
+ # Returns a string representation of the model instance including
243
+ # the class name and values.
244
+ def inspect
245
+ "#<%s @values=%s>" % [self.class.name, @values.inspect]
246
+ end
244
247
 
245
248
  # Defines a method that returns a filtered dataset.
246
249
  def self.subset(name, *args, &block)
@@ -316,5 +319,4 @@ module Sequel
316
319
  dataset.all
317
320
  end
318
321
  end
319
-
320
322
  end
@@ -21,7 +21,7 @@ module Sequel
21
21
  def self.dataset
22
22
  unless @dataset
23
23
  if ds = super_dataset
24
- set_dataset(ds.clone_merge({}))
24
+ set_dataset(ds.clone)
25
25
  elsif !(n = name).empty?
26
26
  set_dataset(db[n.underscore.pluralize.to_sym])
27
27
  else
@@ -299,20 +299,15 @@ module Sequel
299
299
  end
300
300
 
301
301
  ATTR_RE = /^([a-zA-Z_]\w*)(=)?$/.freeze
302
+ EQUAL_SIGN = '='.freeze
302
303
 
303
304
  def method_missing(m, *args) #:nodoc:
304
305
  if m.to_s =~ ATTR_RE
305
306
  att = $1.to_sym
306
- write = $2 == '='
307
+ write = $2 == EQUAL_SIGN
307
308
 
308
309
  # check whether the column is legal
309
- unless columns.include?(att)
310
- # if read accessor and a value exists for the column, we return it
311
- if !write && @values.has_key?(att)
312
- return @values[att]
313
- end
314
-
315
- # otherwise, raise an error
310
+ unless @values.has_key?(att) || columns.include?(att)
316
311
  raise Error, "Invalid column (#{att.inspect}) for #{self}"
317
312
  end
318
313
 
data/spec/model_spec.rb CHANGED
@@ -439,10 +439,9 @@ describe Sequel::Model, "attribute accessors" do
439
439
  MODEL_DB.reset
440
440
 
441
441
  @c = Class.new(Sequel::Model(:items)) do
442
- def columns
443
- [:id, :x, :y]
444
- end
445
442
  end
443
+
444
+ @c.dataset.meta_def(:columns) {[:id, :x, :y]}
446
445
  end
447
446
 
448
447
  it "should be created dynamically" do
@@ -469,7 +468,7 @@ describe Sequel::Model, "attribute accessors" do
469
468
 
470
469
  proc {o.yy?}.should raise_error(NoMethodError)
471
470
  end
472
-
471
+
473
472
  it "should not raise for a column not in the dataset, but for which there's a value" do
474
473
  o = @c.new
475
474
 
@@ -484,9 +483,8 @@ describe Sequel::Model, "attribute accessors" do
484
483
  o.xx.should == 123
485
484
  o.yy.should == nil
486
485
 
487
- proc {o.xx = 3}.should raise_error(Sequel::Error)
486
+ proc {o.xx = 3}.should_not raise_error(Sequel::Error)
488
487
  end
489
-
490
488
  end
491
489
 
492
490
  describe Sequel::Model, ".[]" do
@@ -533,3 +531,13 @@ describe Sequel::Model, ".[]" do
533
531
  /^SELECT \* FROM items WHERE (\(node_id = 3921\) AND \(kind = 201\))|(\(kind = 201\) AND \(node_id = 3921\)) LIMIT 1$/
534
532
  end
535
533
  end
534
+
535
+ context "Model#inspect" do
536
+ setup do
537
+ @o = Sequel::Model.load(:x => 333)
538
+ end
539
+
540
+ specify "should include the class name and the values" do
541
+ @o.inspect.should == '#<Sequel::Model @values={:x=>333}>'
542
+ end
543
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequel_model
3
3
  version: !ruby/object:Gem::Version
4
- version: "0.4"
4
+ version: 0.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Rosner
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-02-05 00:00:00 +02:00
12
+ date: 2008-02-10 00:00:00 +02:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -44,28 +44,28 @@ files:
44
44
  - COPYING
45
45
  - README
46
46
  - Rakefile
47
- - spec/hooks_spec.rb
48
47
  - spec/base_spec.rb
49
48
  - spec/caching_spec.rb
50
- - spec/validations_spec.rb
51
- - spec/record_spec.rb
52
- - spec/spec_helper.rb
49
+ - spec/hooks_spec.rb
53
50
  - spec/model_spec.rb
51
+ - spec/plugins_spec.rb
52
+ - spec/rcov.opts
53
+ - spec/record_spec.rb
54
54
  - spec/relations_spec.rb
55
55
  - spec/schema_spec.rb
56
- - spec/rcov.opts
57
- - spec/plugins_spec.rb
58
56
  - spec/spec.opts
57
+ - spec/spec_helper.rb
58
+ - spec/validations_spec.rb
59
59
  - lib/sequel_model
60
- - lib/sequel_model/validations.rb
60
+ - lib/sequel_model/base.rb
61
+ - lib/sequel_model/caching.rb
62
+ - lib/sequel_model/hooks.rb
63
+ - lib/sequel_model/plugins.rb
61
64
  - lib/sequel_model/pretty_table.rb
62
65
  - lib/sequel_model/record.rb
63
66
  - lib/sequel_model/relations.rb
64
67
  - lib/sequel_model/schema.rb
65
- - lib/sequel_model/plugins.rb
66
- - lib/sequel_model/hooks.rb
67
- - lib/sequel_model/base.rb
68
- - lib/sequel_model/caching.rb
68
+ - lib/sequel_model/validations.rb
69
69
  - lib/sequel_model.rb
70
70
  - CHANGELOG
71
71
  has_rdoc: true