sequel 5.28.0 → 5.29.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.
- checksums.yaml +4 -4
- data/CHANGELOG +12 -0
- data/MIT-LICENSE +1 -1
- data/doc/release_notes/5.29.0.txt +22 -0
- data/lib/sequel/adapters/postgres.rb +5 -1
- data/lib/sequel/adapters/shared/mysql.rb +1 -1
- data/lib/sequel/adapters/tinytds.rb +1 -1
- data/lib/sequel/database/schema_generator.rb +1 -1
- data/lib/sequel/database/transactions.rb +3 -3
- data/lib/sequel/dataset/misc.rb +2 -2
- data/lib/sequel/plugins/empty_failure_backtraces.rb +38 -0
- data/lib/sequel/plugins/json_serializer.rb +15 -4
- data/lib/sequel/plugins/throw_failures.rb +1 -1
- data/lib/sequel/version.rb +1 -1
- data/spec/core/dataset_spec.rb +0 -3
- data/spec/extensions/caller_logging_spec.rb +1 -1
- data/spec/extensions/empty_failure_backtraces_spec.rb +60 -0
- data/spec/extensions/json_serializer_spec.rb +10 -0
- data/spec/extensions/named_timezones_spec.rb +5 -5
- data/spec/integration/associations_test.rb +1 -1
- data/spec/model/plugins_spec.rb +2 -2
- data/spec/sequel_warning.rb +1 -0
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 014f4b025465c81d313d8ea8d5591d47165d84ee0e15906d3591992f63830e08
|
4
|
+
data.tar.gz: f0d19f67d618a2e7cbdf67b198f218cc765507d9de093934edfe1e30aa641e41
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c1cda2787c781672dba64847f1524c0ae4120f0ee1eb412a9dbf814336941337b71b4bbc4bb481eb7d9fd847646ca657fcb2309f66030d6d51d28e96f787f073
|
7
|
+
data.tar.gz: 64a84a203bb795e586ca50f47d9ff865f9162bffae9d5f36c3d3dfc1baa3696f925bd474b2d4c74fc400f77f550c7fb7f74ea29ff4dfac9322db54a3c42a8732
|
data/CHANGELOG
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
=== 5.29.0 (2020-02-01)
|
2
|
+
|
3
|
+
* Recognize another disconnect error in the tinytds adapter (jeremyevans)
|
4
|
+
|
5
|
+
* Fix verbose warning in postgres adapter when using prepared statements and recent versions of ruby-pg (jeremyevans)
|
6
|
+
|
7
|
+
* Work correctly on Ruby 2.8+ by supporting second argument for initialize_clone (jeremyevans)
|
8
|
+
|
9
|
+
* Add empty_failure_backtraces plugin for empty backtraces for ValidationFailed and HookFailed exceptions, much faster on JRuby (jeremyevans)
|
10
|
+
|
11
|
+
* Add Dataset#json_serializer_opts to json_serializer plugin, allowing to set json_serializer options on a per-dataset basis (jeremyevans)
|
12
|
+
|
1
13
|
=== 5.28.0 (2020-01-01)
|
2
14
|
|
3
15
|
* Warn when calling Sequel::JDBC::Postgres::Dataset#with_fetch_size (jeremyevans) (#1665)
|
data/MIT-LICENSE
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
Copyright (c) 2007-2008 Sharon Rosner
|
2
|
-
Copyright (c) 2008-
|
2
|
+
Copyright (c) 2008-2020 Jeremy Evans
|
3
3
|
|
4
4
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
5
5
|
of this software and associated documentation files (the "Software"), to
|
@@ -0,0 +1,22 @@
|
|
1
|
+
= New Features
|
2
|
+
|
3
|
+
* An empty_failure_backtraces plugin has been added for using empty
|
4
|
+
backtraces for ValidationFailed and HookFailed exceptions. In many
|
5
|
+
cases, these exceptions are automatically handled (e.g. web form
|
6
|
+
submission handling to display appropriate error pages), and using
|
7
|
+
empty backtraces is 10-15x faster on JRuby 9.2.7.0+.
|
8
|
+
|
9
|
+
* Dataset#json_serializer_opts has been added to the json_serializer
|
10
|
+
plugin. This allows setting default options on a per-Dataset basis
|
11
|
+
for all Dataset#to_json calls.
|
12
|
+
|
13
|
+
= Other Improvements
|
14
|
+
|
15
|
+
* Another disconnect error is now recognized in the tinytds adapter.
|
16
|
+
|
17
|
+
* Using Sequel with the the CRuby master branch (what will be Ruby 3)
|
18
|
+
now works by supporting a second argument for
|
19
|
+
Dataset#initialize_clone.
|
20
|
+
|
21
|
+
* Sequel now avoids a warning in verbose mode when using the postgres
|
22
|
+
adapter, a recent version of ruby-pg, and bound variables.
|
@@ -70,6 +70,10 @@ module Sequel
|
|
70
70
|
# string names of the server side prepared statement, and values
|
71
71
|
# are SQL strings.
|
72
72
|
attr_reader :prepared_statements
|
73
|
+
|
74
|
+
unless public_method_defined?(:async_exec_params)
|
75
|
+
alias async_exec_params async_exec
|
76
|
+
end
|
73
77
|
else
|
74
78
|
# Make postgres-pr look like pg
|
75
79
|
CONNECTION_OK = -1
|
@@ -149,7 +153,7 @@ module Sequel
|
|
149
153
|
|
150
154
|
# Return the PGResult containing the query results.
|
151
155
|
def execute_query(sql, args)
|
152
|
-
@db.log_connection_yield(sql, self, args){args ?
|
156
|
+
@db.log_connection_yield(sql, self, args){args ? async_exec_params(sql, args) : async_exec(sql)}
|
153
157
|
end
|
154
158
|
end
|
155
159
|
|
@@ -691,7 +691,7 @@ module Sequel
|
|
691
691
|
end
|
692
692
|
|
693
693
|
# Return the results of an EXPLAIN query as a string. Options:
|
694
|
-
# :extended :: Use EXPLAIN
|
694
|
+
# :extended :: Use EXPLAIN EXTENDED instead of EXPLAIN if true.
|
695
695
|
def explain(opts=OPTS)
|
696
696
|
# Load the PrettyTable class, needed for explain output
|
697
697
|
Sequel.extension(:_pretty_table) unless defined?(Sequel::PrettyTable)
|
@@ -145,7 +145,7 @@ module Sequel
|
|
145
145
|
|
146
146
|
# Return true if the :conn argument is present and not active.
|
147
147
|
def disconnect_error?(e, opts)
|
148
|
-
super || (opts[:conn] && !opts[:conn].active?) || ((e.is_a?(::TinyTds::Error) && /\A(Attempt to initiate a new Adaptive Server operation with results pending|The request failed to run because the batch is aborted, this can be caused by abort signal sent from client|Adaptive Server connection timed out)/.match(e.message)))
|
148
|
+
super || (opts[:conn] && !opts[:conn].active?) || ((e.is_a?(::TinyTds::Error) && /\A(Attempt to initiate a new Adaptive Server operation with results pending|The request failed to run because the batch is aborted, this can be caused by abort signal sent from client|Adaptive Server connection timed out|DBPROCESS is dead or not enabled)/.match(e.message)))
|
149
149
|
end
|
150
150
|
|
151
151
|
# Dispose of any possible results of execution.
|
@@ -126,7 +126,7 @@ module Sequel
|
|
126
126
|
# :on_update :: Specify the behavior of this column when being updated
|
127
127
|
# (:restrict, :cascade, :set_null, :set_default, :no_action).
|
128
128
|
# :primary_key :: Make the column as a single primary key column. This should not
|
129
|
-
# be used if you
|
129
|
+
# be used if you want a single autoincrementing primary key column
|
130
130
|
# (use the primary_key method in that case).
|
131
131
|
# :primary_key_constraint_name :: The name to give the primary key constraint
|
132
132
|
# :primary_key_deferrable :: Similar to :deferrable, but for the primary key constraint
|
@@ -439,13 +439,12 @@ module Sequel
|
|
439
439
|
|
440
440
|
# Remove the current thread from the list of active transactions
|
441
441
|
def remove_transaction(conn, committed)
|
442
|
+
callbacks = transaction_hooks(conn, committed)
|
442
443
|
if in_savepoint?(conn)
|
443
444
|
savepoint_callbacks = savepoint_hooks(conn, committed)
|
444
445
|
if committed
|
445
446
|
savepoint_rollback_callbacks = savepoint_hooks(conn, false)
|
446
447
|
end
|
447
|
-
else
|
448
|
-
callbacks = transaction_hooks(conn, committed)
|
449
448
|
end
|
450
449
|
|
451
450
|
if transaction_finished?(conn)
|
@@ -453,7 +452,6 @@ module Sequel
|
|
453
452
|
rolled_back = !committed
|
454
453
|
Sequel.synchronize{h[:rolled_back] = rolled_back}
|
455
454
|
Sequel.synchronize{@transactions.delete(conn)}
|
456
|
-
callbacks.each(&:call) if callbacks
|
457
455
|
elsif savepoint_callbacks || savepoint_rollback_callbacks
|
458
456
|
if committed
|
459
457
|
meth = in_savepoint?(conn) ? :add_savepoint_hook : :add_transaction_hook
|
@@ -473,6 +471,8 @@ module Sequel
|
|
473
471
|
savepoint_callbacks.each(&:call)
|
474
472
|
end
|
475
473
|
end
|
474
|
+
|
475
|
+
callbacks.each(&:call) if callbacks
|
476
476
|
end
|
477
477
|
|
478
478
|
# SQL to rollback to a savepoint
|
data/lib/sequel/dataset/misc.rb
CHANGED
@@ -329,7 +329,7 @@ module Sequel
|
|
329
329
|
end
|
330
330
|
|
331
331
|
# Set the db, opts, and cache for the copy of the dataset.
|
332
|
-
def
|
332
|
+
def initialize_clone(c, _=nil)
|
333
333
|
@db = c.db
|
334
334
|
@opts = Hash[c.opts]
|
335
335
|
if cols = c.cache_get(:_columns)
|
@@ -338,7 +338,7 @@ module Sequel
|
|
338
338
|
@cache = {}
|
339
339
|
end
|
340
340
|
end
|
341
|
-
alias initialize_clone
|
341
|
+
alias initialize_copy initialize_clone
|
342
342
|
|
343
343
|
# Internal recursive version of unqualified_column_for, handling Strings inside
|
344
344
|
# of other objects.
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen-string-literal: true
|
2
|
+
|
3
|
+
module Sequel
|
4
|
+
module Plugins
|
5
|
+
# The empty_failure_backtraces plugin uses empty backtraces when raising HookFailed and ValidationFailed
|
6
|
+
# exceptions. This can be significantly faster, and if you are using these exceptions for
|
7
|
+
# flow control, you do not need the backtraces. This plugin is about 10% faster on CRuby
|
8
|
+
# and 10-15x faster on JRuby 9.2.7.0+. This does not have an effect on JRuby <9.2.7.0.
|
9
|
+
#
|
10
|
+
# Usage:
|
11
|
+
#
|
12
|
+
# # Make all model subclass instances use empty backtraces for HookFailed
|
13
|
+
# # and ValidationFailed exceptions (called before loading subclasses)
|
14
|
+
# Sequel::Model.plugin :empty_failure_backtraces
|
15
|
+
#
|
16
|
+
# # Make the Album class use empty backtraces for HookFailed and ValidationFailed exceptions
|
17
|
+
# Album.plugin :empty_failure_backtraces
|
18
|
+
module EmptyFailureBacktraces
|
19
|
+
module InstanceMethods
|
20
|
+
private
|
21
|
+
|
22
|
+
# Use empty backtrace for HookFailed exceptions.
|
23
|
+
def hook_failed_error(msg)
|
24
|
+
e = super
|
25
|
+
e.set_backtrace([])
|
26
|
+
e
|
27
|
+
end
|
28
|
+
|
29
|
+
# Use empty backtrace for ValidationFailed exceptions.
|
30
|
+
def validation_failed_error
|
31
|
+
e = super
|
32
|
+
e.set_backtrace([])
|
33
|
+
e
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -369,6 +369,13 @@ module Sequel
|
|
369
369
|
end
|
370
370
|
|
371
371
|
module DatasetMethods
|
372
|
+
# Store default options used when calling to_json on this dataset.
|
373
|
+
# These options take precedence over the class level options,
|
374
|
+
# and can be overridden by passing options directly to to_json.
|
375
|
+
def json_serializer_opts(opts=OPTS)
|
376
|
+
clone(:json_serializer_opts=>opts)
|
377
|
+
end
|
378
|
+
|
372
379
|
# Return a JSON string representing an array of all objects in
|
373
380
|
# this dataset. Takes the same options as the instance
|
374
381
|
# method, and passes them to every instance. Additionally,
|
@@ -386,11 +393,15 @@ module Sequel
|
|
386
393
|
# object. If set to a string, wraps the collection in
|
387
394
|
# a root object using the string as the key.
|
388
395
|
def to_json(*a)
|
389
|
-
|
390
|
-
|
396
|
+
opts = model.json_serializer_opts
|
397
|
+
|
398
|
+
if ds_opts = @opts[:json_serializer_opts]
|
399
|
+
opts = opts.merge(ds_opts)
|
400
|
+
end
|
401
|
+
|
402
|
+
if (arg = a.first).is_a?(Hash)
|
403
|
+
opts = opts.merge(arg)
|
391
404
|
a = []
|
392
|
-
else
|
393
|
-
opts = model.json_serializer_opts
|
394
405
|
end
|
395
406
|
|
396
407
|
case collection_root = opts[:root]
|
data/lib/sequel/version.rb
CHANGED
@@ -6,7 +6,7 @@ module Sequel
|
|
6
6
|
|
7
7
|
# The minor version of Sequel. Bumped for every non-patch level
|
8
8
|
# release, generally around once a month.
|
9
|
-
MINOR =
|
9
|
+
MINOR = 29
|
10
10
|
|
11
11
|
# The tiny version of Sequel. Usually 0, only bumped for bugfix
|
12
12
|
# releases that fix regressions from previous versions.
|
data/spec/core/dataset_spec.rb
CHANGED
@@ -3065,7 +3065,6 @@ describe "Dataset#get" do
|
|
3065
3065
|
end
|
3066
3066
|
|
3067
3067
|
it "should select the specified column and fetch its value" do
|
3068
|
-
@d
|
3069
3068
|
5.times do
|
3070
3069
|
@d.get(:name).must_equal "SELECT name FROM test LIMIT 1"
|
3071
3070
|
@d.get(:abc).must_equal "SELECT abc FROM test LIMIT 1"
|
@@ -3077,14 +3076,12 @@ describe "Dataset#get" do
|
|
3077
3076
|
end
|
3078
3077
|
|
3079
3078
|
it "should work with aliased fields" do
|
3080
|
-
@d
|
3081
3079
|
5.times do
|
3082
3080
|
@d.get(Sequel.expr(Sequel[:x][:b]).as(:name)).must_equal "SELECT x.b AS name FROM test LIMIT 1"
|
3083
3081
|
end
|
3084
3082
|
end
|
3085
3083
|
|
3086
3084
|
it "should work with plain strings" do
|
3087
|
-
@d
|
3088
3085
|
5.times do
|
3089
3086
|
@d.get('a').must_equal "SELECT 'a' AS v FROM test LIMIT 1"
|
3090
3087
|
end
|
@@ -42,7 +42,7 @@ describe "caller_logging extension" do
|
|
42
42
|
|
43
43
|
it "should not log caller information if all callers lines are filtered" do
|
44
44
|
@db.caller_logging_ignore = /./
|
45
|
-
exec_sql("SELECT * FROM items")
|
45
|
+
exec_sql("SELECT * FROM items")
|
46
46
|
@log_stream.rewind
|
47
47
|
lines = @log_stream.read.split("\n")
|
48
48
|
lines.length.must_equal 1
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require_relative "spec_helper"
|
2
|
+
|
3
|
+
describe "empty_failure_backtraces plugin" do
|
4
|
+
before do
|
5
|
+
@c = Class.new(Sequel::Model(:items)) do
|
6
|
+
plugin :empty_failure_backtraces
|
7
|
+
columns :x
|
8
|
+
set_primary_key :x
|
9
|
+
unrestrict_primary_key
|
10
|
+
def before_create
|
11
|
+
super
|
12
|
+
cancel_action 'bc' if x == 2
|
13
|
+
end
|
14
|
+
def before_destroy
|
15
|
+
super
|
16
|
+
cancel_action 'bd' if x == 2
|
17
|
+
end
|
18
|
+
def validate
|
19
|
+
super
|
20
|
+
errors.add(:x, "3") if x == 3
|
21
|
+
end
|
22
|
+
end
|
23
|
+
DB.reset
|
24
|
+
end
|
25
|
+
|
26
|
+
it "should work normally if no exceptions are thrown/raised" do
|
27
|
+
o = @c.create(:x=>1)
|
28
|
+
o.must_be_kind_of @c
|
29
|
+
o.valid?.must_equal true
|
30
|
+
o.destroy.must_equal o
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should work normally when not rescuing exceptions internally when calling save" do
|
34
|
+
@c.new.set(:x => 2).save(:raise_on_failure=>false).must_be_nil
|
35
|
+
@c.raise_on_save_failure = false
|
36
|
+
@c.create(:x => 2).must_be_nil
|
37
|
+
@c.load(:x => 2).destroy(:raise_on_failure=>false).must_be_nil
|
38
|
+
end
|
39
|
+
|
40
|
+
it "should work normally when not rescuing exceptions internally when calling valid?" do
|
41
|
+
@c.send(:define_method, :before_validation){cancel_action "bv"}
|
42
|
+
@c.new(:x => 2).valid?.must_equal false
|
43
|
+
end
|
44
|
+
|
45
|
+
it "should raise exceptions with empty backtraces" do
|
46
|
+
begin
|
47
|
+
@c.create(:x => 2)
|
48
|
+
rescue Sequel::HookFailed => e
|
49
|
+
e.backtrace.must_be_empty
|
50
|
+
1
|
51
|
+
end.must_equal 1
|
52
|
+
|
53
|
+
begin
|
54
|
+
@c.create(:x => 3)
|
55
|
+
rescue Sequel::ValidationFailed => e
|
56
|
+
e.backtrace.must_be_empty
|
57
|
+
1
|
58
|
+
end.must_equal 1
|
59
|
+
end
|
60
|
+
end
|
@@ -187,6 +187,16 @@ describe "Sequel::Plugins::JsonSerializer" do
|
|
187
187
|
Album.array_from_json(Album.dataset.to_json(:only=>:name)).must_equal [Album.load(:name=>@album.name)]
|
188
188
|
end
|
189
189
|
|
190
|
+
it "should support setting json_serializer_opts for datasets" do
|
191
|
+
Album.dataset = Album.dataset.with_fetch(:id=>1, :name=>'RF', :artist_id=>2)
|
192
|
+
Album.array_from_json(Album.dataset.json_serializer_opts(:only=>:name).to_json).must_equal [Album.load(:name=>@album.name)]
|
193
|
+
Album.plugin :json_serializer, :only=>:id
|
194
|
+
Album.array_from_json(Album.dataset.json_serializer_opts(:only=>:name).to_json).must_equal [Album.load(:name=>@album.name)]
|
195
|
+
Album.array_from_json(Album.dataset.json_serializer_opts(:only=>:name).to_json(:only=>:artist_id)).must_equal [Album.load(:artist_id=>2)]
|
196
|
+
json = Album.dataset.json_serializer_opts(:only=>:name, :root=>true).to_json(:only=>:artist_id)
|
197
|
+
Album.array_from_json(JSON.parse(json)['albums'].to_json).must_equal [Album.load(:artist_id=>2)]
|
198
|
+
end
|
199
|
+
|
190
200
|
it "should have dataset to_json method work with eager_graph datasets" do
|
191
201
|
ds = Album.dataset.eager_graph(:artist).with_fetch(:id=>1, :name=>'RF', :artist_id=>2, :artist_id_0=>2, :artist_name=>'YM')
|
192
202
|
Sequel.parse_json(ds.to_json(:only=>:name, :include=>{:artist=>{:only=>:name}})).must_equal [{"name"=>"RF", "artist"=>{"name"=>"YM"}}]
|
@@ -158,12 +158,12 @@ describe "Sequel named_timezones extension with Time class" do
|
|
158
158
|
dt = Sequel.database_to_application_timestamp('2009-06-01 06:20:30-0400')
|
159
159
|
dt.must_be_instance_of Time
|
160
160
|
dt.must_equal Time.new(2009,6,1,3,20,30,-25200)
|
161
|
-
dt.utc_offset.must_equal
|
161
|
+
dt.utc_offset.must_equal(-25200)
|
162
162
|
|
163
163
|
dt = Sequel.database_to_application_timestamp('2009-06-01 10:20:30+0000')
|
164
164
|
dt.must_be_instance_of Time
|
165
165
|
dt.must_equal Time.new(2009,6,1,3,20,30,-25200)
|
166
|
-
dt.utc_offset.must_equal
|
166
|
+
dt.utc_offset.must_equal(-25200)
|
167
167
|
end
|
168
168
|
|
169
169
|
it "should raise an error for ambiguous timezones by default" do
|
@@ -175,19 +175,19 @@ describe "Sequel named_timezones extension with Time class" do
|
|
175
175
|
Sequel.database_to_application_timestamp('2004-10-31T01:30:00').must_equal Time.new(2004, 10, 30, 22, 30, 0, -25200)
|
176
176
|
dt = Sequel.database_to_application_timestamp('2004-10-31T01:30:00')
|
177
177
|
dt.must_equal Time.new(2004, 10, 30, 22, 30, 0, -25200)
|
178
|
-
dt.utc_offset.must_equal
|
178
|
+
dt.utc_offset.must_equal(-25200)
|
179
179
|
end
|
180
180
|
|
181
181
|
it "should assume datetimes coming out of the database that don't have an offset as coming from database_timezone" do
|
182
182
|
dt = Sequel.database_to_application_timestamp('2009-06-01 06:20:30')
|
183
183
|
dt.must_be_instance_of Time
|
184
184
|
dt.must_equal Time.new(2009,6,1,3,20,30, -25200)
|
185
|
-
dt.utc_offset.must_equal
|
185
|
+
dt.utc_offset.must_equal(-25200)
|
186
186
|
|
187
187
|
dt = Sequel.database_to_application_timestamp('2009-06-01 10:20:30')
|
188
188
|
dt.must_be_instance_of Time
|
189
189
|
dt.must_equal Time.new(2009,6,1,7,20,30, -25200)
|
190
|
-
dt.utc_offset.must_equal
|
190
|
+
dt.utc_offset.must_equal(-25200)
|
191
191
|
end
|
192
192
|
|
193
193
|
it "should work with the thread_local_timezones extension" do
|
@@ -2131,7 +2131,7 @@ describe "Sequel::Model Simple Associations" do
|
|
2131
2131
|
a.must_equal [@album, album2]
|
2132
2132
|
a.map(&:artist).must_equal [@artist, @artist]
|
2133
2133
|
a.map(&:artist).map(&:albums).must_equal [[@album, album2], [@album, album2]]
|
2134
|
-
a.map(&:artist).map{|
|
2134
|
+
a.map(&:artist).map{|artist| artist.associations[:tags]}.must_equal [[], []]
|
2135
2135
|
end
|
2136
2136
|
|
2137
2137
|
it "should have remove method raise an error for one_to_many records if the object isn't already associated" do
|
data/spec/model/plugins_spec.rb
CHANGED
@@ -326,12 +326,12 @@ describe "Sequel::Plugins.def_sequel_method" do
|
|
326
326
|
it "should define methods using block" do
|
327
327
|
m0 = Sequel::Plugins.def_sequel_method(@m, "x", 0){1}
|
328
328
|
m0.must_be_kind_of Symbol
|
329
|
-
m0.must_match
|
329
|
+
m0.must_match(/\A_sequel_x_\d+\z/)
|
330
330
|
@scope.send(m0).must_equal 1
|
331
331
|
|
332
332
|
m1 = Sequel::Plugins.def_sequel_method(@m, "x", 1){|x| [x, 2]}
|
333
333
|
m1.must_be_kind_of Symbol
|
334
|
-
m1.must_match
|
334
|
+
m1.must_match(/\A_sequel_x_\d+\z/)
|
335
335
|
@scope.send(m1, 3).must_equal [3, 2]
|
336
336
|
end
|
337
337
|
|
data/spec/sequel_warning.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sequel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.
|
4
|
+
version: 5.29.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Evans
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -226,6 +226,7 @@ extra_rdoc_files:
|
|
226
226
|
- doc/release_notes/5.26.0.txt
|
227
227
|
- doc/release_notes/5.27.0.txt
|
228
228
|
- doc/release_notes/5.28.0.txt
|
229
|
+
- doc/release_notes/5.29.0.txt
|
229
230
|
files:
|
230
231
|
- CHANGELOG
|
231
232
|
- MIT-LICENSE
|
@@ -325,6 +326,7 @@ files:
|
|
325
326
|
- doc/release_notes/5.26.0.txt
|
326
327
|
- doc/release_notes/5.27.0.txt
|
327
328
|
- doc/release_notes/5.28.0.txt
|
329
|
+
- doc/release_notes/5.29.0.txt
|
328
330
|
- doc/release_notes/5.3.0.txt
|
329
331
|
- doc/release_notes/5.4.0.txt
|
330
332
|
- doc/release_notes/5.5.0.txt
|
@@ -537,6 +539,7 @@ files:
|
|
537
539
|
- lib/sequel/plugins/dirty.rb
|
538
540
|
- lib/sequel/plugins/eager_each.rb
|
539
541
|
- lib/sequel/plugins/eager_graph_eager.rb
|
542
|
+
- lib/sequel/plugins/empty_failure_backtraces.rb
|
540
543
|
- lib/sequel/plugins/error_splitter.rb
|
541
544
|
- lib/sequel/plugins/finder.rb
|
542
545
|
- lib/sequel/plugins/force_encoding.rb
|
@@ -663,6 +666,7 @@ files:
|
|
663
666
|
- spec/extensions/eager_each_spec.rb
|
664
667
|
- spec/extensions/eager_graph_eager_spec.rb
|
665
668
|
- spec/extensions/empty_array_consider_nulls_spec.rb
|
669
|
+
- spec/extensions/empty_failure_backtraces_spec.rb
|
666
670
|
- spec/extensions/error_splitter_spec.rb
|
667
671
|
- spec/extensions/error_sql_spec.rb
|
668
672
|
- spec/extensions/escaped_like_spec.rb
|