sequel 3.6.0 → 3.7.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/CHANGELOG +28 -0
- data/Rakefile +12 -15
- data/doc/release_notes/3.7.0.txt +179 -0
- data/doc/virtual_rows.rdoc +3 -0
- data/lib/sequel/adapters/mysql.rb +8 -5
- data/lib/sequel/adapters/shared/mssql.rb +24 -15
- data/lib/sequel/adapters/shared/mysql.rb +16 -0
- data/lib/sequel/adapters/shared/oracle.rb +18 -0
- data/lib/sequel/adapters/shared/postgres.rb +59 -1
- data/lib/sequel/dataset/convenience.rb +58 -11
- data/lib/sequel/dataset/features.rb +5 -0
- data/lib/sequel/dataset/query.rb +3 -3
- data/lib/sequel/dataset/sql.rb +19 -2
- data/lib/sequel/extensions/schema_dumper.rb +6 -1
- data/lib/sequel/model/base.rb +40 -16
- data/lib/sequel/plugins/validation_helpers.rb +7 -2
- data/lib/sequel/sql.rb +22 -0
- data/lib/sequel/version.rb +1 -1
- data/spec/adapters/postgres_spec.rb +16 -0
- data/spec/core/dataset_spec.rb +187 -0
- data/spec/core/expression_filters_spec.rb +25 -0
- data/spec/extensions/schema_dumper_spec.rb +6 -0
- data/spec/extensions/validation_helpers_spec.rb +35 -0
- data/spec/integration/dataset_test.rb +37 -0
- data/spec/model/model_spec.rb +26 -0
- data/spec/model/record_spec.rb +65 -3
- metadata +4 -3
- data/spec/spec.opts +0 -0
data/spec/model/model_spec.rb
CHANGED
@@ -565,3 +565,29 @@ context "Model.db_schema" do
|
|
565
565
|
@c.primary_key.should == :id
|
566
566
|
end
|
567
567
|
end
|
568
|
+
|
569
|
+
context "Model#use_transactions" do
|
570
|
+
before do
|
571
|
+
@c = Class.new(Sequel::Model(:items))
|
572
|
+
end
|
573
|
+
|
574
|
+
specify "should return class value by default" do
|
575
|
+
@c.use_transactions = true
|
576
|
+
@c.new.use_transactions.should == true
|
577
|
+
@c.use_transactions = false
|
578
|
+
@c.new.use_transactions.should == false
|
579
|
+
end
|
580
|
+
|
581
|
+
specify "should return set value if manually set" do
|
582
|
+
instance = @c.new
|
583
|
+
instance.use_transactions = false
|
584
|
+
instance.use_transactions.should == false
|
585
|
+
@c.use_transactions = true
|
586
|
+
instance.use_transactions.should == false
|
587
|
+
|
588
|
+
instance.use_transactions = true
|
589
|
+
instance.use_transactions.should == true
|
590
|
+
@c.use_transactions = false
|
591
|
+
instance.use_transactions.should == true
|
592
|
+
end
|
593
|
+
end
|
data/spec/model/record_spec.rb
CHANGED
@@ -158,7 +158,7 @@ describe "Model#save" do
|
|
158
158
|
res.should == [nil, nil]
|
159
159
|
end
|
160
160
|
|
161
|
-
it "should use Model's
|
161
|
+
it "should use Model's use_transactions setting by default" do
|
162
162
|
@c.use_transactions = true
|
163
163
|
@c.load(:id => 3, :x => 1, :y => nil).save(:y)
|
164
164
|
MODEL_DB.sqls.should == ["BEGIN", "UPDATE items SET y = NULL WHERE (id = 3)", "COMMIT"]
|
@@ -169,7 +169,7 @@ describe "Model#save" do
|
|
169
169
|
MODEL_DB.reset
|
170
170
|
end
|
171
171
|
|
172
|
-
it "should inherit Model's
|
172
|
+
it "should inherit Model's use_transactions setting" do
|
173
173
|
@c.use_transactions = true
|
174
174
|
Class.new(@c).load(:id => 3, :x => 1, :y => nil).save(:y)
|
175
175
|
MODEL_DB.sqls.should == ["BEGIN", "UPDATE items SET y = NULL WHERE (id = 3)", "COMMIT"]
|
@@ -180,7 +180,7 @@ describe "Model#save" do
|
|
180
180
|
MODEL_DB.reset
|
181
181
|
end
|
182
182
|
|
183
|
-
it "should use object's
|
183
|
+
it "should use object's use_transactions setting" do
|
184
184
|
o = @c.load(:id => 3, :x => 1, :y => nil)
|
185
185
|
o.use_transactions = false
|
186
186
|
@c.use_transactions = true
|
@@ -207,6 +207,56 @@ describe "Model#save" do
|
|
207
207
|
MODEL_DB.sqls.should == ["BEGIN", "UPDATE items SET y = NULL WHERE (id = 3)", "COMMIT"]
|
208
208
|
MODEL_DB.reset
|
209
209
|
end
|
210
|
+
|
211
|
+
it "should rollback if before_save returns false and raise_on_save_failure = true" do
|
212
|
+
o = @c.load(:id => 3, :x => 1, :y => nil)
|
213
|
+
o.use_transactions = true
|
214
|
+
o.raise_on_save_failure = true
|
215
|
+
def o.before_save
|
216
|
+
false
|
217
|
+
end
|
218
|
+
proc { o.save(:y) }.should raise_error(Sequel::BeforeHookFailed)
|
219
|
+
MODEL_DB.sqls.should == ["BEGIN", "ROLLBACK"]
|
220
|
+
MODEL_DB.reset
|
221
|
+
end
|
222
|
+
|
223
|
+
it "should not rollback outer transactions if before_save returns false and raise_on_save_failure = false" do
|
224
|
+
o = @c.load(:id => 3, :x => 1, :y => nil)
|
225
|
+
o.use_transactions = true
|
226
|
+
o.raise_on_save_failure = false
|
227
|
+
def o.before_save
|
228
|
+
false
|
229
|
+
end
|
230
|
+
MODEL_DB.transaction do
|
231
|
+
o.save(:y).should == nil
|
232
|
+
MODEL_DB.run "BLAH"
|
233
|
+
end
|
234
|
+
MODEL_DB.sqls.should == ["BEGIN", "BLAH", "COMMIT"]
|
235
|
+
MODEL_DB.reset
|
236
|
+
end
|
237
|
+
|
238
|
+
it "should rollback if before_save returns false and raise_on_save_failure = false" do
|
239
|
+
o = @c.load(:id => 3, :x => 1, :y => nil)
|
240
|
+
o.use_transactions = true
|
241
|
+
o.raise_on_save_failure = false
|
242
|
+
def o.before_save
|
243
|
+
false
|
244
|
+
end
|
245
|
+
o.save(:y).should == nil
|
246
|
+
MODEL_DB.sqls.should == ["BEGIN", "ROLLBACK"]
|
247
|
+
MODEL_DB.reset
|
248
|
+
end
|
249
|
+
|
250
|
+
it "should not rollback if before_save throws Rollback and use_transactions = false" do
|
251
|
+
o = @c.load(:id => 3, :x => 1, :y => nil)
|
252
|
+
o.use_transactions = false
|
253
|
+
def o.before_save
|
254
|
+
raise Sequel::Rollback
|
255
|
+
end
|
256
|
+
proc { o.save(:y) }.should raise_error(Sequel::Rollback)
|
257
|
+
MODEL_DB.sqls.should == []
|
258
|
+
MODEL_DB.reset
|
259
|
+
end
|
210
260
|
end
|
211
261
|
|
212
262
|
describe "Model#marshallable" do
|
@@ -760,6 +810,18 @@ describe Sequel::Model, "#destroy" do
|
|
760
810
|
@instance.destroy
|
761
811
|
end
|
762
812
|
|
813
|
+
it "should run within a transaction if :transaction option is true" do
|
814
|
+
@instance.use_transactions = false
|
815
|
+
@model.db.should_receive(:transaction)
|
816
|
+
@instance.destroy(:transaction => true)
|
817
|
+
end
|
818
|
+
|
819
|
+
it "should not run within a transaction if :transaction option is false" do
|
820
|
+
@instance.use_transactions = true
|
821
|
+
@model.db.should_not_receive(:transaction)
|
822
|
+
@instance.destroy(:transaction => false)
|
823
|
+
end
|
824
|
+
|
763
825
|
it "should run before_destroy and after_destroy hooks" do
|
764
826
|
@model.send(:define_method, :before_destroy){MODEL_DB.execute('before blah')}
|
765
827
|
@model.send(:define_method, :after_destroy){MODEL_DB.execute('after blah')}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.
|
4
|
+
version: 3.7.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Evans
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-12-01 00:00:00 -08:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|
@@ -57,6 +57,7 @@ extra_rdoc_files:
|
|
57
57
|
- doc/release_notes/3.4.0.txt
|
58
58
|
- doc/release_notes/3.5.0.txt
|
59
59
|
- doc/release_notes/3.6.0.txt
|
60
|
+
- doc/release_notes/3.7.0.txt
|
60
61
|
files:
|
61
62
|
- COPYING
|
62
63
|
- CHANGELOG
|
@@ -94,6 +95,7 @@ files:
|
|
94
95
|
- doc/release_notes/3.4.0.txt
|
95
96
|
- doc/release_notes/3.5.0.txt
|
96
97
|
- doc/release_notes/3.6.0.txt
|
98
|
+
- doc/release_notes/3.7.0.txt
|
97
99
|
- doc/schema.rdoc
|
98
100
|
- doc/sharding.rdoc
|
99
101
|
- doc/virtual_rows.rdoc
|
@@ -176,7 +178,6 @@ files:
|
|
176
178
|
- spec/model/spec_helper.rb
|
177
179
|
- spec/model/validations_spec.rb
|
178
180
|
- spec/rcov.opts
|
179
|
-
- spec/spec.opts
|
180
181
|
- spec/spec_config.rb
|
181
182
|
- spec/spec_config.rb.example
|
182
183
|
- lib/sequel.rb
|
data/spec/spec.opts
DELETED
File without changes
|