sequel 3.25.0 → 3.26.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/README.rdoc +3 -3
- data/Rakefile +17 -11
- data/doc/release_notes/3.26.0.txt +88 -0
- data/lib/sequel/adapters/ado.rb +10 -0
- data/lib/sequel/adapters/do.rb +12 -0
- data/lib/sequel/adapters/jdbc.rb +6 -6
- data/lib/sequel/adapters/mysql.rb +8 -2
- data/lib/sequel/adapters/mysql2.rb +5 -1
- data/lib/sequel/adapters/odbc.rb +10 -2
- data/lib/sequel/adapters/oracle.rb +5 -1
- data/lib/sequel/adapters/postgres.rb +10 -4
- data/lib/sequel/adapters/shared/access.rb +11 -0
- data/lib/sequel/adapters/shared/oracle.rb +0 -4
- data/lib/sequel/adapters/shared/postgres.rb +0 -12
- data/lib/sequel/adapters/tinytds.rb +9 -0
- data/lib/sequel/connection_pool.rb +1 -1
- data/lib/sequel/connection_pool/threaded.rb +3 -2
- data/lib/sequel/core.rb +1 -1
- data/lib/sequel/database/connecting.rb +3 -3
- data/lib/sequel/database/dataset.rb +1 -1
- data/lib/sequel/database/dataset_defaults.rb +1 -1
- data/lib/sequel/database/logging.rb +1 -1
- data/lib/sequel/database/misc.rb +23 -6
- data/lib/sequel/database/query.rb +16 -15
- data/lib/sequel/database/schema_methods.rb +21 -16
- data/lib/sequel/dataset/actions.rb +19 -16
- data/lib/sequel/dataset/features.rb +8 -2
- data/lib/sequel/dataset/graph.rb +1 -1
- data/lib/sequel/dataset/misc.rb +29 -9
- data/lib/sequel/dataset/mutation.rb +3 -3
- data/lib/sequel/dataset/prepared_statements.rb +11 -11
- data/lib/sequel/dataset/query.rb +28 -7
- data/lib/sequel/dataset/sql.rb +2 -2
- data/lib/sequel/extensions/migration.rb +1 -0
- data/lib/sequel/model.rb +5 -4
- data/lib/sequel/model/associations.rb +487 -328
- data/lib/sequel/model/base.rb +43 -26
- data/lib/sequel/model/exceptions.rb +2 -0
- data/lib/sequel/plugins/identity_map.rb +111 -4
- data/lib/sequel/plugins/sharding.rb +12 -20
- data/lib/sequel/plugins/xml_serializer.rb +2 -2
- data/lib/sequel/version.rb +1 -1
- data/spec/adapters/postgres_spec.rb +0 -6
- data/spec/core/connection_pool_spec.rb +6 -0
- data/spec/core/database_spec.rb +12 -0
- data/spec/core/schema_spec.rb +9 -2
- data/spec/extensions/identity_map_spec.rb +162 -0
- data/spec/extensions/many_through_many_spec.rb +3 -19
- data/spec/extensions/xml_serializer_spec.rb +4 -4
- data/spec/model/eager_loading_spec.rb +7 -21
- data/spec/model/record_spec.rb +23 -0
- metadata +36 -34
@@ -13,6 +13,11 @@ describe "Sequel::Plugins::IdentityMap" do
|
|
13
13
|
execute(sql)
|
14
14
|
yield h
|
15
15
|
end
|
16
|
+
def self.waw_identity_map(&block) # with and without
|
17
|
+
with_identity_map(&block)
|
18
|
+
db.reset
|
19
|
+
yield
|
20
|
+
end
|
16
21
|
end
|
17
22
|
class ::IdentityMapAlbum < ::IdentityMapModel
|
18
23
|
columns :artist_id
|
@@ -216,4 +221,161 @@ describe "Sequel::Plugins::IdentityMap" do
|
|
216
221
|
MODEL_DB.sqls.length.should == 2
|
217
222
|
end
|
218
223
|
end
|
224
|
+
|
225
|
+
it "should not override custom :eager_loaders for many_to_many associations" do
|
226
|
+
@c1.columns :id
|
227
|
+
@c2.columns :id
|
228
|
+
c = @c2
|
229
|
+
@c1.many_to_many :artists, :class=>@c2, :left_key=>:album_id, :right_key=>:artist_id, :join_table=>:aa, :eager_loader=>(proc do |eo|
|
230
|
+
eo[:rows].each{|object| object.associations[:artists] = [c.load(:id=>object.id)]}
|
231
|
+
end)
|
232
|
+
ds = @c1.dataset
|
233
|
+
def ds.fetch_rows(sql)
|
234
|
+
execute(sql)
|
235
|
+
yield({:id=>1})
|
236
|
+
yield({:id=>2})
|
237
|
+
yield({:id=>3})
|
238
|
+
end
|
239
|
+
|
240
|
+
@c.waw_identity_map do
|
241
|
+
MODEL_DB.sqls.length.should == 0
|
242
|
+
a = @c1.eager(:artists).all
|
243
|
+
MODEL_DB.sqls.length.should == 1
|
244
|
+
a.should == [@c1.load(:id=>1), @c1.load(:id=>2), @c1.load(:id=>3)]
|
245
|
+
a.map{|x| x.artists}.should == [[@c2.load(:id=>1)], [@c2.load(:id=>2)], [@c2.load(:id=>3)]]
|
246
|
+
MODEL_DB.sqls.length.should == 1
|
247
|
+
end
|
248
|
+
end
|
249
|
+
|
250
|
+
it "should work correctly when eagerly loading many_to_many associations" do
|
251
|
+
@c1.columns :id
|
252
|
+
@c2.columns :id
|
253
|
+
@c1.many_to_many :artists, :class=>@c2, :left_key=>:album_id, :right_key=>:artist_id, :join_table=>:aa
|
254
|
+
ds = @c1.dataset
|
255
|
+
def ds.fetch_rows(sql)
|
256
|
+
execute(sql)
|
257
|
+
yield({:id=>1})
|
258
|
+
yield({:id=>2})
|
259
|
+
yield({:id=>3})
|
260
|
+
end
|
261
|
+
ds = @c2.dataset
|
262
|
+
def ds.fetch_rows(sql)
|
263
|
+
execute(sql)
|
264
|
+
yield({:id=>1, :x_foreign_key_x=>1})
|
265
|
+
yield({:id=>1, :x_foreign_key_x=>2})
|
266
|
+
yield({:id=>2, :x_foreign_key_x=>1})
|
267
|
+
yield({:id=>2, :x_foreign_key_x=>2})
|
268
|
+
yield({:id=>3, :x_foreign_key_x=>1})
|
269
|
+
yield({:id=>3, :x_foreign_key_x=>1})
|
270
|
+
end
|
271
|
+
|
272
|
+
@c.waw_identity_map do
|
273
|
+
MODEL_DB.sqls.length.should == 0
|
274
|
+
a = @c1.eager(:artists).all
|
275
|
+
MODEL_DB.sqls.length.should == 2
|
276
|
+
a.should == [@c1.load(:id=>1), @c1.load(:id=>2), @c1.load(:id=>3)]
|
277
|
+
a.map{|x| x.artists}.should == [[@c2.load(:id=>1), @c2.load(:id=>2), @c2.load(:id=>3), @c2.load(:id=>3)], [@c2.load(:id=>1), @c2.load(:id=>2)], []]
|
278
|
+
MODEL_DB.sqls.length.should == 2
|
279
|
+
end
|
280
|
+
end
|
281
|
+
|
282
|
+
it "should work correctly when eagerly loading many_to_many associations with composite keys" do
|
283
|
+
@c1.columns :id, :id2
|
284
|
+
@c2.columns :id
|
285
|
+
@c1.set_primary_key :id, :id2
|
286
|
+
@c1.many_to_many :artists, :class=>@c2, :left_key=>[:album_id1, :album_id2], :right_key=>:artist_id, :join_table=>:aa
|
287
|
+
ds = @c1.dataset
|
288
|
+
def ds.fetch_rows(sql)
|
289
|
+
execute(sql)
|
290
|
+
yield({:id=>1, :id2=>4})
|
291
|
+
yield({:id=>2, :id2=>5})
|
292
|
+
yield({:id=>3, :id2=>6})
|
293
|
+
end
|
294
|
+
ds = @c2.dataset
|
295
|
+
def ds.fetch_rows(sql)
|
296
|
+
execute(sql)
|
297
|
+
yield({:id=>1, :x_foreign_key_0_x=>1, :x_foreign_key_1_x=>4})
|
298
|
+
yield({:id=>1, :x_foreign_key_0_x=>2, :x_foreign_key_1_x=>5})
|
299
|
+
yield({:id=>2, :x_foreign_key_0_x=>1, :x_foreign_key_1_x=>4})
|
300
|
+
yield({:id=>2, :x_foreign_key_0_x=>2, :x_foreign_key_1_x=>5})
|
301
|
+
yield({:id=>3, :x_foreign_key_0_x=>1, :x_foreign_key_1_x=>4})
|
302
|
+
yield({:id=>3, :x_foreign_key_0_x=>1, :x_foreign_key_1_x=>4})
|
303
|
+
end
|
304
|
+
|
305
|
+
@c.waw_identity_map do
|
306
|
+
MODEL_DB.sqls.length.should == 0
|
307
|
+
a = @c1.eager(:artists).all
|
308
|
+
MODEL_DB.sqls.length.should == 2
|
309
|
+
a.should == [@c1.load(:id=>1, :id2=>4), @c1.load(:id=>2, :id2=>5), @c1.load(:id=>3, :id2=>6)]
|
310
|
+
a.map{|x| x.artists}.should == [[@c2.load(:id=>1), @c2.load(:id=>2), @c2.load(:id=>3), @c2.load(:id=>3)], [@c2.load(:id=>1), @c2.load(:id=>2)], []]
|
311
|
+
MODEL_DB.sqls.length.should == 2
|
312
|
+
end
|
313
|
+
end
|
314
|
+
|
315
|
+
it "should work correctly when eagerly loading many_through_many associations" do
|
316
|
+
@c1.columns :id
|
317
|
+
@c2.columns :id
|
318
|
+
@c1.plugin :many_through_many
|
319
|
+
@c1.many_through_many :artists, [[:aa, :album_id, :artist_id]], :class=>@c2
|
320
|
+
ds = @c1.dataset
|
321
|
+
def ds.fetch_rows(sql)
|
322
|
+
execute(sql)
|
323
|
+
yield({:id=>1})
|
324
|
+
yield({:id=>2})
|
325
|
+
yield({:id=>3})
|
326
|
+
end
|
327
|
+
ds = @c2.dataset
|
328
|
+
def ds.fetch_rows(sql)
|
329
|
+
execute(sql)
|
330
|
+
yield({:id=>1, :x_foreign_key_x=>1})
|
331
|
+
yield({:id=>1, :x_foreign_key_x=>2})
|
332
|
+
yield({:id=>2, :x_foreign_key_x=>1})
|
333
|
+
yield({:id=>2, :x_foreign_key_x=>2})
|
334
|
+
yield({:id=>3, :x_foreign_key_x=>1})
|
335
|
+
yield({:id=>3, :x_foreign_key_x=>1})
|
336
|
+
end
|
337
|
+
|
338
|
+
@c.waw_identity_map do
|
339
|
+
MODEL_DB.sqls.length.should == 0
|
340
|
+
a = @c1.eager(:artists).all
|
341
|
+
MODEL_DB.sqls.length.should == 2
|
342
|
+
a.should == [@c1.load(:id=>1), @c1.load(:id=>2), @c1.load(:id=>3)]
|
343
|
+
a.map{|x| x.artists}.should == [[@c2.load(:id=>1), @c2.load(:id=>2), @c2.load(:id=>3), @c2.load(:id=>3)], [@c2.load(:id=>1), @c2.load(:id=>2)], []]
|
344
|
+
MODEL_DB.sqls.length.should == 2
|
345
|
+
end
|
346
|
+
end
|
347
|
+
|
348
|
+
it "should work correctly when eagerly loading many_to_many associations with composite keys" do
|
349
|
+
@c1.columns :id, :id2
|
350
|
+
@c2.columns :id
|
351
|
+
@c1.set_primary_key :id, :id2
|
352
|
+
@c1.plugin :many_through_many
|
353
|
+
@c1.many_through_many :artists, [[:aa, [:album_id1, :album_id2], :artist_id]], :class=>@c2
|
354
|
+
ds = @c1.dataset
|
355
|
+
def ds.fetch_rows(sql)
|
356
|
+
execute(sql)
|
357
|
+
yield({:id=>1, :id2=>4})
|
358
|
+
yield({:id=>2, :id2=>5})
|
359
|
+
yield({:id=>3, :id2=>6})
|
360
|
+
end
|
361
|
+
ds = @c2.dataset
|
362
|
+
def ds.fetch_rows(sql)
|
363
|
+
execute(sql)
|
364
|
+
yield({:id=>1, :x_foreign_key_0_x=>1, :x_foreign_key_1_x=>4})
|
365
|
+
yield({:id=>1, :x_foreign_key_0_x=>2, :x_foreign_key_1_x=>5})
|
366
|
+
yield({:id=>2, :x_foreign_key_0_x=>1, :x_foreign_key_1_x=>4})
|
367
|
+
yield({:id=>2, :x_foreign_key_0_x=>2, :x_foreign_key_1_x=>5})
|
368
|
+
yield({:id=>3, :x_foreign_key_0_x=>1, :x_foreign_key_1_x=>4})
|
369
|
+
yield({:id=>3, :x_foreign_key_0_x=>1, :x_foreign_key_1_x=>4})
|
370
|
+
end
|
371
|
+
|
372
|
+
@c.waw_identity_map do
|
373
|
+
MODEL_DB.sqls.length.should == 0
|
374
|
+
a = @c1.eager(:artists).all
|
375
|
+
MODEL_DB.sqls.length.should == 2
|
376
|
+
a.should == [@c1.load(:id=>1, :id2=>4), @c1.load(:id=>2, :id2=>5), @c1.load(:id=>3, :id2=>6)]
|
377
|
+
a.map{|x| x.artists}.should == [[@c2.load(:id=>1), @c2.load(:id=>2), @c2.load(:id=>3), @c2.load(:id=>3)], [@c2.load(:id=>1), @c2.load(:id=>2)], []]
|
378
|
+
MODEL_DB.sqls.length.should == 2
|
379
|
+
end
|
380
|
+
end
|
219
381
|
end
|
@@ -558,24 +558,8 @@ describe "Sequel::Plugins::ManyThroughMany eager loading methods" do
|
|
558
558
|
end
|
559
559
|
|
560
560
|
it "should cascade eagerly loading when the :eager_graph association option is used" do
|
561
|
-
Tag.dataset.extend(Module.new {
|
562
|
-
def columns
|
563
|
-
[:id]
|
564
|
-
end
|
565
|
-
def fetch_rows(sql)
|
566
|
-
@db << sql
|
567
|
-
yield({:id=>2, :tracks_id=>4, :x_foreign_key_x=>1})
|
568
|
-
end
|
569
|
-
})
|
570
561
|
@c1.many_through_many :tags, [[:albums_artists, :artist_id, :album_id], [:albums, :id, :id], [:albums_tags, :album_id, :tag_id]], :eager_graph=>:tracks
|
571
|
-
|
572
|
-
a.should == [@c1.load(:id=>1)]
|
573
|
-
MODEL_DB.sqls.should == ['SELECT * FROM artists',
|
574
|
-
'SELECT tags.id, tracks.id AS tracks_id, albums_artists.artist_id AS x_foreign_key_x FROM (SELECT tags.* FROM tags INNER JOIN albums_tags ON (albums_tags.tag_id = tags.id) INNER JOIN albums ON (albums.id = albums_tags.album_id) INNER JOIN albums_artists ON ((albums_artists.album_id = albums.id) AND (albums_artists.artist_id IN (1)))) AS tags LEFT OUTER JOIN albums_tags AS albums_tags_0 ON (albums_tags_0.tag_id = tags.id) LEFT OUTER JOIN albums ON (albums.id = albums_tags_0.album_id) LEFT OUTER JOIN tracks ON (tracks.album_id = albums.id)']
|
575
|
-
a = a.first
|
576
|
-
a.tags.should == [Tag.load(:id=>2)]
|
577
|
-
a.tags.first.tracks.should == [Track.load(:id=>4)]
|
578
|
-
MODEL_DB.sqls.length.should == 2
|
562
|
+
proc{@c1.eager(:tags).all}.should raise_error(Sequel::Error)
|
579
563
|
end
|
580
564
|
|
581
565
|
it "should respect :eager_graph when lazily loading an association" do
|
@@ -782,8 +766,8 @@ describe "Sequel::Plugins::ManyThroughMany eager loading methods" do
|
|
782
766
|
MODEL_DB.sqls.length.should == 1
|
783
767
|
end
|
784
768
|
|
785
|
-
it "eager graphing should give you a
|
786
|
-
@c1.eager_graph(:tags, :artists).first.should == {:
|
769
|
+
it "eager graphing should give you a plain hash when called without .all" do
|
770
|
+
@c1.eager_graph(:tags, :artists).first.should == {:albums_0_id=>3, :artists_0_id=>10, :id=>1, :tags_id=>2}
|
787
771
|
end
|
788
772
|
|
789
773
|
it "should be able to use eager and eager_graph together" do
|
@@ -118,13 +118,13 @@ describe "Sequel::Plugins::XmlSerializer" do
|
|
118
118
|
end
|
119
119
|
|
120
120
|
it "should support an :encoding option when serializing" do
|
121
|
-
["<?xml version=\"1.0\" encoding=\"
|
122
|
-
"<?xml version=\"1.0\" encoding=\"
|
121
|
+
["<?xml version=\"1.0\" encoding=\"UTF-8\"?><artist><id>2</id><name>YJM</name></artist>",
|
122
|
+
"<?xml version=\"1.0\" encoding=\"UTF-8\"?><artist><name>YJM</name><id>2</id></artist>"].should include(@artist.to_xml(:encoding=>'UTF-8').gsub(/\n */m, ''))
|
123
123
|
end
|
124
124
|
|
125
125
|
it "should support a :builder_opts option when serializing" do
|
126
|
-
["<?xml version=\"1.0\" encoding=\"
|
127
|
-
"<?xml version=\"1.0\" encoding=\"
|
126
|
+
["<?xml version=\"1.0\" encoding=\"UTF-8\"?><artist><id>2</id><name>YJM</name></artist>",
|
127
|
+
"<?xml version=\"1.0\" encoding=\"UTF-8\"?><artist><name>YJM</name><id>2</id></artist>"].should include(@artist.to_xml(:builder_opts=>{:encoding=>'UTF-8'}).gsub(/\n */m, ''))
|
128
128
|
end
|
129
129
|
|
130
130
|
it "should support an :types option when serializing" do
|
@@ -106,6 +106,9 @@ describe Sequel::Model, "#eager" do
|
|
106
106
|
end
|
107
107
|
})
|
108
108
|
end
|
109
|
+
after do
|
110
|
+
[:EagerAlbum, :EagerBand, :EagerTrack, :EagerGenre, :EagerBandMember].each{|x| Object.send(:remove_const, x)}
|
111
|
+
end
|
109
112
|
|
110
113
|
it "should raise an error if called without a symbol or hash" do
|
111
114
|
proc{EagerAlbum.eager(Object.new)}.should raise_error(Sequel::Error)
|
@@ -315,25 +318,8 @@ describe Sequel::Model, "#eager" do
|
|
315
318
|
MODEL_DB.sqls.length.should == 2
|
316
319
|
end
|
317
320
|
|
318
|
-
it "should
|
319
|
-
|
320
|
-
def columns
|
321
|
-
[:id]
|
322
|
-
end
|
323
|
-
def fetch_rows(sql)
|
324
|
-
@db << sql
|
325
|
-
yield({:id=>5, :bands_id=>2, :p_k=>6, :x_foreign_key_x=>2})
|
326
|
-
yield({:id=>5, :bands_id=>3, :p_k=>6, :x_foreign_key_x=>2})
|
327
|
-
end
|
328
|
-
})
|
329
|
-
a = EagerBand.eager(:graph_members).all
|
330
|
-
a.should == [EagerBand.load(:id=>2)]
|
331
|
-
MODEL_DB.sqls.should == ['SELECT * FROM bands',
|
332
|
-
'SELECT members.id, bands.id AS bands_id, bands.p_k, bm.band_id AS x_foreign_key_x FROM (SELECT members.* FROM members INNER JOIN bm ON ((bm.member_id = members.id) AND (bm.band_id IN (2)))) AS members LEFT OUTER JOIN bm AS bm_0 ON (bm_0.member_id = members.id) LEFT OUTER JOIN bands ON (bands.id = bm_0.band_id) ORDER BY bands.id']
|
333
|
-
a = a.first
|
334
|
-
a.graph_members.should == [EagerBandMember.load(:id=>5)]
|
335
|
-
a.graph_members.first.bands.should == [EagerBand.load(:id=>2, :p_k=>6), EagerBand.load(:id=>3, :p_k=>6)]
|
336
|
-
MODEL_DB.sqls.length.should == 2
|
321
|
+
it "should raise an Error when eager loading a many_to_many association with the :eager_graph option" do
|
322
|
+
proc{EagerBand.eager(:graph_members).all}.should raise_error(Sequel::Error)
|
337
323
|
end
|
338
324
|
|
339
325
|
it "should respect :eager_graph when lazily loading an association" do
|
@@ -1077,13 +1063,13 @@ describe Sequel::Model, "#eager_graph" do
|
|
1077
1063
|
a.members.first.values.should == {:id => 5}
|
1078
1064
|
end
|
1079
1065
|
|
1080
|
-
it "should give you a
|
1066
|
+
it "should give you a plain hash when called without .all" do
|
1081
1067
|
ds = GraphAlbum.eager_graph(:band)
|
1082
1068
|
ds.sql.should == 'SELECT albums.id, albums.band_id, band.id AS band_id_0, band.vocalist_id FROM albums LEFT OUTER JOIN bands AS band ON (band.id = albums.band_id)'
|
1083
1069
|
def ds.fetch_rows(sql, &block)
|
1084
1070
|
yield({:id=>1, :band_id=>2, :band_id_0=>2, :vocalist_id=>3})
|
1085
1071
|
end
|
1086
|
-
ds.first.should == {:
|
1072
|
+
ds.first.should == {:id=>1, :band_id=>2, :band_id_0=>2, :vocalist_id=>3}
|
1087
1073
|
end
|
1088
1074
|
|
1089
1075
|
it "should not drop any associated objects if the graph could not be a cartesian product" do
|
data/spec/model/record_spec.rb
CHANGED
@@ -723,6 +723,29 @@ describe Sequel::Model, "#set" do
|
|
723
723
|
MODEL_DB.sqls.should == []
|
724
724
|
end
|
725
725
|
|
726
|
+
it "should raise error if strict_param_setting is true and method does not exist" do
|
727
|
+
@o1.strict_param_setting = true
|
728
|
+
proc{@o1.set('foo' => 1)}.should raise_error(Sequel::Error)
|
729
|
+
end
|
730
|
+
|
731
|
+
it "should raise error if strict_param_setting is true and column is a primary key" do
|
732
|
+
@o1.strict_param_setting = true
|
733
|
+
proc{@o1.set('id' => 1)}.should raise_error(Sequel::Error)
|
734
|
+
end
|
735
|
+
|
736
|
+
it "should raise error if strict_param_setting is true and column is restricted" do
|
737
|
+
@o1.strict_param_setting = true
|
738
|
+
@c.set_restricted_columns :x
|
739
|
+
proc{@o1.set('x' => 1)}.should raise_error(Sequel::Error)
|
740
|
+
end
|
741
|
+
|
742
|
+
it "should not create a symbol if strict_param_setting is true and string is given" do
|
743
|
+
@o1.strict_param_setting = true
|
744
|
+
l = Symbol.all_symbols.length
|
745
|
+
proc{@o1.set('sadojafdso' => 1)}.should raise_error(Sequel::Error)
|
746
|
+
Symbol.all_symbols.length.should == l
|
747
|
+
end
|
748
|
+
|
726
749
|
it "#set should correctly handle cases where an instance method is added to the class" do
|
727
750
|
@o1.set(:x => 1)
|
728
751
|
@o1.values.should == {:x => 1}
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 111
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 3
|
8
|
-
-
|
8
|
+
- 26
|
9
9
|
- 0
|
10
|
-
version: 3.
|
10
|
+
version: 3.26.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jeremy Evans
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-
|
18
|
+
date: 2011-08-01 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies: []
|
21
21
|
|
@@ -29,22 +29,22 @@ extra_rdoc_files:
|
|
29
29
|
- README.rdoc
|
30
30
|
- CHANGELOG
|
31
31
|
- MIT-LICENSE
|
32
|
+
- doc/active_record.rdoc
|
32
33
|
- doc/advanced_associations.rdoc
|
34
|
+
- doc/association_basics.rdoc
|
33
35
|
- doc/cheat_sheet.rdoc
|
36
|
+
- doc/dataset_basics.rdoc
|
34
37
|
- doc/dataset_filtering.rdoc
|
38
|
+
- doc/migration.rdoc
|
39
|
+
- doc/model_hooks.rdoc
|
35
40
|
- doc/opening_databases.rdoc
|
36
41
|
- doc/prepared_statements.rdoc
|
42
|
+
- doc/querying.rdoc
|
37
43
|
- doc/reflection.rdoc
|
38
44
|
- doc/sharding.rdoc
|
39
45
|
- doc/sql.rdoc
|
40
|
-
- doc/virtual_rows.rdoc
|
41
|
-
- doc/dataset_basics.rdoc
|
42
|
-
- doc/association_basics.rdoc
|
43
|
-
- doc/querying.rdoc
|
44
|
-
- doc/migration.rdoc
|
45
46
|
- doc/validations.rdoc
|
46
|
-
- doc/
|
47
|
-
- doc/active_record.rdoc
|
47
|
+
- doc/virtual_rows.rdoc
|
48
48
|
- doc/release_notes/1.0.txt
|
49
49
|
- doc/release_notes/1.1.txt
|
50
50
|
- doc/release_notes/1.3.txt
|
@@ -65,14 +65,6 @@ extra_rdoc_files:
|
|
65
65
|
- doc/release_notes/2.9.0.txt
|
66
66
|
- doc/release_notes/3.0.0.txt
|
67
67
|
- doc/release_notes/3.1.0.txt
|
68
|
-
- doc/release_notes/3.2.0.txt
|
69
|
-
- doc/release_notes/3.3.0.txt
|
70
|
-
- doc/release_notes/3.4.0.txt
|
71
|
-
- doc/release_notes/3.5.0.txt
|
72
|
-
- doc/release_notes/3.6.0.txt
|
73
|
-
- doc/release_notes/3.7.0.txt
|
74
|
-
- doc/release_notes/3.8.0.txt
|
75
|
-
- doc/release_notes/3.9.0.txt
|
76
68
|
- doc/release_notes/3.10.0.txt
|
77
69
|
- doc/release_notes/3.11.0.txt
|
78
70
|
- doc/release_notes/3.12.0.txt
|
@@ -83,23 +75,38 @@ extra_rdoc_files:
|
|
83
75
|
- doc/release_notes/3.17.0.txt
|
84
76
|
- doc/release_notes/3.18.0.txt
|
85
77
|
- doc/release_notes/3.19.0.txt
|
78
|
+
- doc/release_notes/3.2.0.txt
|
86
79
|
- doc/release_notes/3.20.0.txt
|
87
80
|
- doc/release_notes/3.21.0.txt
|
88
81
|
- doc/release_notes/3.22.0.txt
|
89
82
|
- doc/release_notes/3.23.0.txt
|
90
83
|
- doc/release_notes/3.24.0.txt
|
91
84
|
- doc/release_notes/3.25.0.txt
|
85
|
+
- doc/release_notes/3.3.0.txt
|
86
|
+
- doc/release_notes/3.4.0.txt
|
87
|
+
- doc/release_notes/3.5.0.txt
|
88
|
+
- doc/release_notes/3.6.0.txt
|
89
|
+
- doc/release_notes/3.7.0.txt
|
90
|
+
- doc/release_notes/3.8.0.txt
|
91
|
+
- doc/release_notes/3.9.0.txt
|
92
|
+
- doc/release_notes/3.26.0.txt
|
92
93
|
files:
|
93
94
|
- MIT-LICENSE
|
94
95
|
- CHANGELOG
|
95
96
|
- README.rdoc
|
96
97
|
- Rakefile
|
97
98
|
- bin/sequel
|
99
|
+
- doc/active_record.rdoc
|
98
100
|
- doc/advanced_associations.rdoc
|
101
|
+
- doc/association_basics.rdoc
|
99
102
|
- doc/cheat_sheet.rdoc
|
103
|
+
- doc/dataset_basics.rdoc
|
100
104
|
- doc/dataset_filtering.rdoc
|
105
|
+
- doc/migration.rdoc
|
106
|
+
- doc/model_hooks.rdoc
|
101
107
|
- doc/opening_databases.rdoc
|
102
108
|
- doc/prepared_statements.rdoc
|
109
|
+
- doc/querying.rdoc
|
103
110
|
- doc/reflection.rdoc
|
104
111
|
- doc/release_notes/1.0.txt
|
105
112
|
- doc/release_notes/1.1.txt
|
@@ -121,14 +128,6 @@ files:
|
|
121
128
|
- doc/release_notes/2.9.0.txt
|
122
129
|
- doc/release_notes/3.0.0.txt
|
123
130
|
- doc/release_notes/3.1.0.txt
|
124
|
-
- doc/release_notes/3.2.0.txt
|
125
|
-
- doc/release_notes/3.3.0.txt
|
126
|
-
- doc/release_notes/3.4.0.txt
|
127
|
-
- doc/release_notes/3.5.0.txt
|
128
|
-
- doc/release_notes/3.6.0.txt
|
129
|
-
- doc/release_notes/3.7.0.txt
|
130
|
-
- doc/release_notes/3.8.0.txt
|
131
|
-
- doc/release_notes/3.9.0.txt
|
132
131
|
- doc/release_notes/3.10.0.txt
|
133
132
|
- doc/release_notes/3.11.0.txt
|
134
133
|
- doc/release_notes/3.12.0.txt
|
@@ -139,22 +138,25 @@ files:
|
|
139
138
|
- doc/release_notes/3.17.0.txt
|
140
139
|
- doc/release_notes/3.18.0.txt
|
141
140
|
- doc/release_notes/3.19.0.txt
|
141
|
+
- doc/release_notes/3.2.0.txt
|
142
142
|
- doc/release_notes/3.20.0.txt
|
143
143
|
- doc/release_notes/3.21.0.txt
|
144
144
|
- doc/release_notes/3.22.0.txt
|
145
145
|
- doc/release_notes/3.23.0.txt
|
146
146
|
- doc/release_notes/3.24.0.txt
|
147
147
|
- doc/release_notes/3.25.0.txt
|
148
|
+
- doc/release_notes/3.3.0.txt
|
149
|
+
- doc/release_notes/3.4.0.txt
|
150
|
+
- doc/release_notes/3.5.0.txt
|
151
|
+
- doc/release_notes/3.6.0.txt
|
152
|
+
- doc/release_notes/3.7.0.txt
|
153
|
+
- doc/release_notes/3.8.0.txt
|
154
|
+
- doc/release_notes/3.9.0.txt
|
155
|
+
- doc/release_notes/3.26.0.txt
|
148
156
|
- doc/sharding.rdoc
|
149
157
|
- doc/sql.rdoc
|
150
|
-
- doc/virtual_rows.rdoc
|
151
|
-
- doc/dataset_basics.rdoc
|
152
|
-
- doc/association_basics.rdoc
|
153
|
-
- doc/querying.rdoc
|
154
|
-
- doc/migration.rdoc
|
155
158
|
- doc/validations.rdoc
|
156
|
-
- doc/
|
157
|
-
- doc/active_record.rdoc
|
159
|
+
- doc/virtual_rows.rdoc
|
158
160
|
- spec/adapters/firebird_spec.rb
|
159
161
|
- spec/adapters/informix_spec.rb
|
160
162
|
- spec/adapters/mssql_spec.rb
|