sequel-inline_schema 0.3.0 → 0.3.4
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/History.md +28 -0
- data/README.md +3 -0
- data/Rakefile +0 -1
- data/lib/sequel/inline_schema.rb +1 -1
- data/lib/sequel/plugins/inline_schema.rb +29 -10
- data/spec/sequel/plugins/inline_schema_spec.rb +193 -15
- data.tar.gz.sig +0 -0
- metadata +36 -34
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5f472b3119c986020f3dcecab118b2985e6aae903e0252a8aa6c987086525688
|
4
|
+
data.tar.gz: 98e02125e66c86ae93e7754ef6c638476a51d25938053c19b03330302cf0477b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 749fbeba674e2dcf1ce3949336c13d729a2487a4d3d73974963b9e8c9015b08f92ee57babcd5d3094804128509744346bee4b263e65ccacda66b2e00ca91bd24
|
7
|
+
data.tar.gz: f4089b9ae88912674fd4e4387c3571f1a542c66424c5e55216e2c38cb52dfca8ae749cc0b7eafe3f0bce0e86cf1300f95960370bc3d20a0ec282037d5c931118
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/History.md
CHANGED
@@ -1,6 +1,34 @@
|
|
1
1
|
# Release History for sequel-inline_schema
|
2
2
|
|
3
3
|
---
|
4
|
+
## v0.3.4 [2021-11-08] Michael Granger <ged@faeriemud.org>
|
5
|
+
|
6
|
+
Improvements:
|
7
|
+
|
8
|
+
- Update for Ruby 3, update gem-signing cert.
|
9
|
+
|
10
|
+
|
11
|
+
## v0.3.3 [2020-02-24] Michael Granger <ged@faeriemud.org>
|
12
|
+
|
13
|
+
Bugfixes:
|
14
|
+
|
15
|
+
- Allow options to be passed through #drop_table
|
16
|
+
- Fix view_exists? query for schema-qualified table names
|
17
|
+
|
18
|
+
|
19
|
+
## v0.3.2 [2020-02-11] Michael Granger <ged@faeriemud.org>
|
20
|
+
|
21
|
+
Bugfixes:
|
22
|
+
|
23
|
+
- Fixed view hooks and added specs.
|
24
|
+
|
25
|
+
|
26
|
+
## v0.3.1 [2020-02-11] Michael Granger <ged@faeriemud.org>
|
27
|
+
|
28
|
+
Bugfixes:
|
29
|
+
|
30
|
+
- Change back to using `create_view`
|
31
|
+
|
4
32
|
|
5
33
|
## v0.3.0 [2020-02-10] Michael Granger <ged@faeriemud.org>
|
6
34
|
|
data/README.md
CHANGED
data/Rakefile
CHANGED
data/lib/sequel/inline_schema.rb
CHANGED
@@ -175,16 +175,16 @@ module Sequel::Plugins::InlineSchema
|
|
175
175
|
|
176
176
|
|
177
177
|
### Drops table. If the table doesn't exist, this will probably raise an error.
|
178
|
-
def drop_table
|
178
|
+
def drop_table( opts={} )
|
179
179
|
self.before_drop_table
|
180
|
-
self.db.drop_table( self.table_name )
|
180
|
+
self.db.drop_table( self.table_name, opts )
|
181
181
|
self.after_drop_table
|
182
182
|
end
|
183
183
|
|
184
184
|
|
185
185
|
### Drops table if it already exists, do nothing.
|
186
|
-
def drop_table?
|
187
|
-
self.drop_table if self.table_exists?
|
186
|
+
def drop_table?( opts={} )
|
187
|
+
self.drop_table( opts ) if self.table_exists?
|
188
188
|
end
|
189
189
|
|
190
190
|
|
@@ -210,8 +210,11 @@ module Sequel::Plugins::InlineSchema
|
|
210
210
|
dataset = self.view_dataset or raise "No view declared for this model."
|
211
211
|
options = self.view_options.merge( options )
|
212
212
|
|
213
|
+
self.before_create_view
|
213
214
|
self.db.log_info "Creating view %s(%p): %s" % [ self.table_name, options, dataset.sql ]
|
214
|
-
self.db.
|
215
|
+
self.db.create_view( self.table_name, dataset, options )
|
216
|
+
@db_schema = get_db_schema( true )
|
217
|
+
self.after_create_view
|
215
218
|
end
|
216
219
|
|
217
220
|
|
@@ -236,31 +239,35 @@ module Sequel::Plugins::InlineSchema
|
|
236
239
|
|
237
240
|
|
238
241
|
### Drop the view backing this model.
|
239
|
-
def drop_view
|
242
|
+
def drop_view( options={} )
|
240
243
|
self.before_drop_view
|
241
|
-
self.db.drop_view( self.table_name )
|
244
|
+
self.db.drop_view( self.table_name, self.view_options.merge(options) )
|
242
245
|
self.after_drop_view
|
243
246
|
end
|
244
247
|
|
245
248
|
|
246
249
|
### Drop the view if it already exists, otherwise do nothing.
|
247
|
-
def drop_view?
|
248
|
-
self.drop_view if self.view_exists?
|
250
|
+
def drop_view?( options={} )
|
251
|
+
self.drop_view( options ) if self.view_exists?
|
249
252
|
end
|
250
253
|
|
251
254
|
|
252
255
|
### Returns true if the view associated with this model exists, false otherwise.
|
256
|
+
### :FIXME: This is PostgreSQL-specific, but there doesn't appear to be any
|
257
|
+
### cross-driver way to check for a view.
|
253
258
|
def view_exists?
|
254
259
|
# Make shortcuts for fully-qualified names
|
255
260
|
class_table = Sequel[:pg_catalog][:pg_class].as( :c )
|
256
261
|
ns_table = Sequel[:pg_catalog][:pg_namespace].as( :n )
|
257
262
|
is_visible = Sequel[:pg_catalog][:pg_table_is_visible]
|
258
263
|
|
264
|
+
_, table, _ = Sequel.split_symbol( self.table_name )
|
265
|
+
|
259
266
|
ds = db[ class_table ].
|
260
267
|
join( ns_table, oid: :relnamespace )
|
261
268
|
ds = ds.where( Sequel[:c][:relkind] => ['v', 'm'] ).
|
262
269
|
exclude( Sequel[:n][:nspname] => /^pg_toast/ ).
|
263
|
-
where( Sequel[:c][:relname] =>
|
270
|
+
where( Sequel[:c][:relname] => table.to_s ).
|
264
271
|
where( Sequel.function(is_visible, Sequel[:c][:oid]) )
|
265
272
|
|
266
273
|
return ds.count == 1
|
@@ -320,6 +327,18 @@ module Sequel::Plugins::InlineSchema
|
|
320
327
|
end
|
321
328
|
|
322
329
|
|
330
|
+
### View-drop hook; called before the backing view is dropped.
|
331
|
+
def before_drop_view
|
332
|
+
return true
|
333
|
+
end
|
334
|
+
|
335
|
+
|
336
|
+
### View-drop hook; called after the backing view is dropped.
|
337
|
+
def after_drop_view
|
338
|
+
return true
|
339
|
+
end
|
340
|
+
|
341
|
+
|
323
342
|
#
|
324
343
|
# Schema-state introspection
|
325
344
|
#
|
@@ -34,7 +34,23 @@ describe Sequel::Plugins::InlineSchema do
|
|
34
34
|
mclass
|
35
35
|
end
|
36
36
|
|
37
|
-
let
|
37
|
+
let( :view_dataset ) { model_class.dataset.group_and_count( :age ) }
|
38
|
+
|
39
|
+
let( :view_class ) do
|
40
|
+
view_class = Class.new( Sequel::Model )
|
41
|
+
view_class.plugin( :inline_schema )
|
42
|
+
view_class.set_dataset( db[view] )
|
43
|
+
view_class.set_view_dataset { view_dataset.naked }
|
44
|
+
return view_class
|
45
|
+
end
|
46
|
+
|
47
|
+
let( :materialized_view_class ) do
|
48
|
+
materialized_view_class = Class.new( Sequel::Model )
|
49
|
+
materialized_view_class.plugin( :inline_schema )
|
50
|
+
materialized_view_class.set_dataset( db[view] )
|
51
|
+
materialized_view_class.set_view_dataset( materialized: true ) { view_dataset.naked }
|
52
|
+
return materialized_view_class
|
53
|
+
end
|
38
54
|
|
39
55
|
let( :valid_pg_attributes ) do
|
40
56
|
[
|
@@ -185,42 +201,72 @@ describe Sequel::Plugins::InlineSchema do
|
|
185
201
|
end
|
186
202
|
|
187
203
|
|
204
|
+
it "allows a model to pass options when dropping its table" do
|
205
|
+
model_class.drop_table( cascade: true )
|
206
|
+
expect( db.sqls ).to include( %{DROP TABLE "#{table}" CASCADE} )
|
207
|
+
end
|
188
208
|
|
189
|
-
it "allows a model to create a view instead of a table" do
|
190
|
-
view_class = Class.new( Sequel::Model )
|
191
|
-
view_class.plugin( :inline_schema )
|
192
|
-
view_class.set_dataset( db[view] )
|
193
|
-
view_class.set_view_dataset { view_dataset.naked }
|
194
209
|
|
210
|
+
it "allows a model to create a view instead of a table" do
|
195
211
|
db.fetch = fake_db_fetcher
|
196
212
|
db.sqls.clear
|
197
213
|
|
198
214
|
view_class.create_view
|
199
215
|
|
200
216
|
expect( db.sqls ).to include(
|
201
|
-
%{CREATE
|
217
|
+
%{CREATE VIEW "#{view}" AS SELECT "age", count(*) AS "count" FROM "#{table}" GROUP BY "age"}
|
202
218
|
)
|
203
219
|
end
|
204
220
|
|
205
221
|
|
206
|
-
it "allows a model to
|
207
|
-
materialized_view_class = Class.new( Sequel::Model )
|
208
|
-
materialized_view_class.plugin( :inline_schema )
|
209
|
-
materialized_view_class.set_dataset( db[view] )
|
210
|
-
materialized_view_class.set_view_dataset( materialized: true ) { view_dataset.naked }
|
211
|
-
|
222
|
+
it "allows a model to create a materialized view instead of a table" do
|
212
223
|
db.fetch = fake_db_fetcher
|
213
224
|
db.sqls.clear
|
214
225
|
|
215
226
|
materialized_view_class.create_view
|
216
227
|
|
217
228
|
expect( db.sqls ).to include(
|
218
|
-
%{CREATE
|
229
|
+
%{CREATE MATERIALIZED VIEW "#{view}" AS SELECT "age", count(*) AS "count" } +
|
219
230
|
%{FROM "#{table}" GROUP BY "age"}
|
220
231
|
)
|
221
232
|
end
|
222
233
|
|
223
234
|
|
235
|
+
it "allows a model to determine whether its view exists or not" do
|
236
|
+
view_class.view_exists?
|
237
|
+
statements = db.sqls.dup
|
238
|
+
|
239
|
+
expect( statements.last ).to include( %{WHERE (("c"."relkind" IN ('v', 'm'))} )
|
240
|
+
expect( statements.last ).to include(
|
241
|
+
%{("c"."relname" = '#{view}') AND "pg_catalog"."pg_table_is_visible"("c"."oid")) LIMIT 1}
|
242
|
+
)
|
243
|
+
end
|
244
|
+
|
245
|
+
|
246
|
+
it "allows a model to drop its view" do
|
247
|
+
db.fetch = fake_db_fetcher
|
248
|
+
db.sqls.clear
|
249
|
+
|
250
|
+
view_class.drop_view
|
251
|
+
|
252
|
+
expect( db.sqls ).to include(
|
253
|
+
%{DROP VIEW "#{view}"}
|
254
|
+
)
|
255
|
+
end
|
256
|
+
|
257
|
+
|
258
|
+
it "allows a model to drop its materialized view" do
|
259
|
+
db.fetch = fake_db_fetcher
|
260
|
+
db.sqls.clear
|
261
|
+
|
262
|
+
materialized_view_class.drop_view
|
263
|
+
|
264
|
+
expect( db.sqls ).to include(
|
265
|
+
%{DROP MATERIALIZED VIEW "#{view}"}
|
266
|
+
)
|
267
|
+
end
|
268
|
+
|
269
|
+
|
224
270
|
describe "table-creation ordering" do
|
225
271
|
|
226
272
|
let( :fake_db_fetcher ) do
|
@@ -308,7 +354,7 @@ describe Sequel::Plugins::InlineSchema do
|
|
308
354
|
end
|
309
355
|
|
310
356
|
|
311
|
-
describe "hooks" do
|
357
|
+
describe "table hooks" do
|
312
358
|
|
313
359
|
let( :model_class ) do
|
314
360
|
class_obj = super()
|
@@ -439,5 +485,137 @@ describe Sequel::Plugins::InlineSchema do
|
|
439
485
|
|
440
486
|
end
|
441
487
|
|
488
|
+
|
489
|
+
describe "view hooks" do
|
490
|
+
|
491
|
+
let( :view_class ) do
|
492
|
+
class_obj = super()
|
493
|
+
class_obj.singleton_class.send( :attr_accessor, :called )
|
494
|
+
class_obj.called = {}
|
495
|
+
class_obj
|
496
|
+
end
|
497
|
+
|
498
|
+
|
499
|
+
it "calls a hook before creating the model's view" do
|
500
|
+
def view_class.before_create_view
|
501
|
+
self.called[ :before_create_view ] = true
|
502
|
+
super
|
503
|
+
end
|
504
|
+
|
505
|
+
view_class.create_view
|
506
|
+
|
507
|
+
expect( view_class.called ).to include( :before_create_view )
|
508
|
+
end
|
509
|
+
|
510
|
+
|
511
|
+
it "allows cancellation of create_view from the before_create_view hook" do
|
512
|
+
def view_class.before_create_view
|
513
|
+
self.called[ :before_create_view ] = true
|
514
|
+
cancel_action
|
515
|
+
end
|
516
|
+
|
517
|
+
expect {
|
518
|
+
view_class.create_view
|
519
|
+
}.to raise_error( Sequel::HookFailed, /hook failed/i )
|
520
|
+
end
|
521
|
+
|
522
|
+
|
523
|
+
it "allows cancellation of create_view with a message from the before_create_view hook" do
|
524
|
+
def view_class.before_create_view
|
525
|
+
self.called[ :before_create_view ] = true
|
526
|
+
cancel_action( "Wait, don't create yet!" )
|
527
|
+
end
|
528
|
+
|
529
|
+
expect {
|
530
|
+
view_class.create_view
|
531
|
+
}.to raise_error( Sequel::HookFailed, "Wait, don't create yet!" )
|
532
|
+
end
|
533
|
+
|
534
|
+
|
535
|
+
it "allows cancellation of create_view with a Symbol from the before_create_view hook" do
|
536
|
+
def view_class.before_create_view
|
537
|
+
self.called[ :before_create_view ] = true
|
538
|
+
cancel_action( :before_create_view )
|
539
|
+
end
|
540
|
+
|
541
|
+
expect {
|
542
|
+
view_class.create_view
|
543
|
+
}.to raise_error( Sequel::HookFailed, /before_create_view/ )
|
544
|
+
end
|
545
|
+
|
546
|
+
|
547
|
+
it "calls a hook after view creation" do
|
548
|
+
def view_class.after_create_view
|
549
|
+
super
|
550
|
+
self.called[ :after_create_view ] = true
|
551
|
+
end
|
552
|
+
|
553
|
+
view_class.create_view
|
554
|
+
|
555
|
+
expect( view_class.called ).to include( :after_create_view )
|
556
|
+
end
|
557
|
+
|
558
|
+
|
559
|
+
it "calls a hook before dropping the model's view" do
|
560
|
+
def view_class.before_drop_view
|
561
|
+
self.called[ :before_drop_view ] = true
|
562
|
+
super
|
563
|
+
end
|
564
|
+
|
565
|
+
view_class.drop_view
|
566
|
+
|
567
|
+
expect( view_class.called ).to include( :before_drop_view )
|
568
|
+
end
|
569
|
+
|
570
|
+
|
571
|
+
it "allows cancellation of drop_view from the before_drop_view hook" do
|
572
|
+
def view_class.before_drop_view
|
573
|
+
self.called[ :before_drop_view ] = true
|
574
|
+
cancel_action
|
575
|
+
end
|
576
|
+
|
577
|
+
expect {
|
578
|
+
view_class.drop_view
|
579
|
+
}.to raise_error( Sequel::HookFailed, /hook failed/i )
|
580
|
+
end
|
581
|
+
|
582
|
+
|
583
|
+
it "allows cancellation of drop_view with a message from the before_drop_view hook" do
|
584
|
+
def view_class.before_drop_view
|
585
|
+
self.called[ :before_drop_view ] = true
|
586
|
+
cancel_action( "Wait, don't drop yet!" )
|
587
|
+
end
|
588
|
+
|
589
|
+
expect {
|
590
|
+
view_class.drop_view
|
591
|
+
}.to raise_error( Sequel::HookFailed, "Wait, don't drop yet!" )
|
592
|
+
end
|
593
|
+
|
594
|
+
|
595
|
+
it "allows cancellation of drop_view with a Symbol from the before_drop_view hook" do
|
596
|
+
def view_class.before_drop_view
|
597
|
+
self.called[ :before_drop_view ] = true
|
598
|
+
cancel_action( :before_drop_view )
|
599
|
+
end
|
600
|
+
|
601
|
+
expect {
|
602
|
+
view_class.drop_view
|
603
|
+
}.to raise_error( Sequel::HookFailed, /before_drop_view/ )
|
604
|
+
end
|
605
|
+
|
606
|
+
|
607
|
+
it "calls a hook after a class's view is dropped" do
|
608
|
+
def view_class.after_drop_view
|
609
|
+
super
|
610
|
+
self.called[ :after_drop_view ] = true
|
611
|
+
end
|
612
|
+
|
613
|
+
view_class.drop_view
|
614
|
+
|
615
|
+
expect( view_class.called ).to include( :after_drop_view )
|
616
|
+
end
|
617
|
+
|
618
|
+
end
|
619
|
+
|
442
620
|
end
|
443
621
|
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequel-inline_schema
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Granger
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MIID+DCCAmCgAwIBAgIBAzANBgkqhkiG9w0BAQsFADAiMSAwHgYDVQQDDBdnZWQv
|
14
|
+
REM9RmFlcmllTVVEL0RDPW9yZzAeFw0yMDEyMjQyMDU1MjlaFw0yMTEyMjQyMDU1
|
15
|
+
MjlaMCIxIDAeBgNVBAMMF2dlZC9EQz1GYWVyaWVNVUQvREM9b3JnMIIBojANBgkq
|
16
16
|
hkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAvyVhkRzvlEs0fe7145BYLfN6njX9ih5H
|
17
17
|
L60U0p0euIurpv84op9CNKF9tx+1WKwyQvQP7qFGuZxkSUuWcP/sFhDXL1lWUuIl
|
18
18
|
M4uHbGCRmOshDrF4dgnBeOvkHr1fIhPlJm5FO+Vew8tSQmlDsosxLUx+VB7DrVFO
|
@@ -21,20 +21,19 @@ cert_chain:
|
|
21
21
|
vQ66lts4alKC69TE5cuKasWBm+16A4aEe3XdZBRNmtOu/g81gvwA7fkJHKllJuaI
|
22
22
|
dXzdHqq+zbGZVSQ7pRYHYomD0IiDe1DbIouFnPWmagaBnGHwXkDT2bKKP+s2v21m
|
23
23
|
ozilJg4aar2okb/RA6VS87o+d7g6LpDDMMQjH4G9OPnJENLdhu8KnPw/ivSVvQw7
|
24
|
-
N2I4L/ZOIe2DIVuYH7aLHfjZDQv/
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
XrxOxp8o0uOkU7FdLSGsyqJ2LzsR4obN
|
24
|
+
N2I4L/ZOIe2DIVuYH7aLHfjZDQv/mNgpAgMBAAGjOTA3MAkGA1UdEwQCMAAwCwYD
|
25
|
+
VR0PBAQDAgSwMB0GA1UdDgQWBBRyjf55EbrHagiRLqt5YAd3yb8k4DANBgkqhkiG
|
26
|
+
9w0BAQsFAAOCAYEAMYegZanJi8zq7QKPT7wqXefX4C88I5JWeBHR3PvvWK0CwyMV
|
27
|
+
peyiu5I13w/lYX+HUZjE4qsSpJMJFXWl4WZCOo+AMprOcf0PxfuJpxCej5D4tavf
|
28
|
+
vRfhahSw7XJrcZih/3J+/UgoH7R05MJ+8LTcy3HGrB3a0vTafjm8OY7Xpa0LJDoN
|
29
|
+
JDqxK321VIHyTibbKeA1hWSE6ljlQDvFbTqiCj3Ulp1jTv3TOlvRl8fqcfhxUJI0
|
30
|
+
+5Q82jJODjEN+GaWs0V+NlrbU94cXwS2PH5dXogftB5YYA5Ex8A0ikZ73xns4Hdo
|
31
|
+
XxdLdd92F5ovxA23j/rKe/IDwqr6FpDkU3nPXH/Qp0TVGv9zZnVJc/Z6ChkuWj8z
|
32
|
+
pW7JAyyiiHZgKKDReDrA2LA7Zs3o/7KA6UtUH0FHf8LYhcK+pfHk6RtjRe65ffw+
|
33
|
+
MCh97sQ/Z/MOusb5+QddBmB+k8EicXyGNl4b5L4XpL7fIQu+Y96TB3JEJlShxFD9
|
34
|
+
k9FjI4d9EP54gS/4
|
36
35
|
-----END CERTIFICATE-----
|
37
|
-
date:
|
36
|
+
date: 2021-11-08 00:00:00.000000000 Z
|
38
37
|
dependencies:
|
39
38
|
- !ruby/object:Gem::Dependency
|
40
39
|
name: sequel
|
@@ -42,14 +41,14 @@ dependencies:
|
|
42
41
|
requirements:
|
43
42
|
- - "~>"
|
44
43
|
- !ruby/object:Gem::Version
|
45
|
-
version: '5.
|
44
|
+
version: '5.50'
|
46
45
|
type: :runtime
|
47
46
|
prerelease: false
|
48
47
|
version_requirements: !ruby/object:Gem::Requirement
|
49
48
|
requirements:
|
50
49
|
- - "~>"
|
51
50
|
- !ruby/object:Gem::Version
|
52
|
-
version: '5.
|
51
|
+
version: '5.50'
|
53
52
|
- !ruby/object:Gem::Dependency
|
54
53
|
name: pg
|
55
54
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,14 +69,14 @@ dependencies:
|
|
70
69
|
requirements:
|
71
70
|
- - "~>"
|
72
71
|
- !ruby/object:Gem::Version
|
73
|
-
version: '0.
|
72
|
+
version: '0.19'
|
74
73
|
type: :development
|
75
74
|
prerelease: false
|
76
75
|
version_requirements: !ruby/object:Gem::Requirement
|
77
76
|
requirements:
|
78
77
|
- - "~>"
|
79
78
|
- !ruby/object:Gem::Version
|
80
|
-
version: '0.
|
79
|
+
version: '0.19'
|
81
80
|
- !ruby/object:Gem::Dependency
|
82
81
|
name: simplecov
|
83
82
|
requirement: !ruby/object:Gem::Requirement
|
@@ -106,9 +105,8 @@ dependencies:
|
|
106
105
|
- - "~>"
|
107
106
|
- !ruby/object:Gem::Version
|
108
107
|
version: '0.3'
|
109
|
-
description:
|
110
|
-
|
111
|
-
any migrations in the class itself (similar to the legacy <code>schema</code> plugin).
|
108
|
+
description: This is a set of plugins for Sequel for declaring a model's table
|
109
|
+
schema and any migrations in the class itself (similar to the legacy schema plugin).
|
112
110
|
email:
|
113
111
|
- ged@faeriemud.org
|
114
112
|
executables: []
|
@@ -131,26 +129,30 @@ files:
|
|
131
129
|
homepage: https://hg.sr.ht/~ged/Sequel-InlineSchema
|
132
130
|
licenses:
|
133
131
|
- BSD-3-Clause
|
134
|
-
metadata:
|
135
|
-
|
132
|
+
metadata:
|
133
|
+
homepage_uri: https://hg.sr.ht/~ged/Sequel-InlineSchema
|
134
|
+
documentation_uri: http://deveiate.org/code/sequel-inline_schema
|
135
|
+
changelog_uri: http://deveiate.org/code/sequel-inline_schema/History_md.html
|
136
|
+
source_uri: https://hg.sr.ht/~ged/Sequel-InlineSchema/browse
|
137
|
+
bug_tracker_uri: https://todo.sr.ht/~ged/Sequel-InlineSchema/browse
|
138
|
+
post_install_message:
|
136
139
|
rdoc_options: []
|
137
140
|
require_paths:
|
138
141
|
- lib
|
139
142
|
required_ruby_version: !ruby/object:Gem::Requirement
|
140
143
|
requirements:
|
141
|
-
- - "
|
144
|
+
- - ">="
|
142
145
|
- !ruby/object:Gem::Version
|
143
|
-
version: '
|
146
|
+
version: '0'
|
144
147
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
145
148
|
requirements:
|
146
149
|
- - ">="
|
147
150
|
- !ruby/object:Gem::Version
|
148
151
|
version: '0'
|
149
152
|
requirements: []
|
150
|
-
rubygems_version: 3.
|
151
|
-
signing_key:
|
153
|
+
rubygems_version: 3.2.22
|
154
|
+
signing_key:
|
152
155
|
specification_version: 4
|
153
|
-
summary: This is a set of plugins for Sequel for declaring a model
|
154
|
-
and any migrations in the class itself (similar to the legacy
|
155
|
-
plugin).
|
156
|
+
summary: This is a set of plugins for Sequel for declaring a model's table schema
|
157
|
+
and any migrations in the class itself (similar to the legacy schema plugin).
|
156
158
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|