sequel 3.25.0 → 3.26.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|