sequel 5.31.0 → 5.32.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +16 -0
- data/doc/advanced_associations.rdoc +4 -4
- data/doc/association_basics.rdoc +3 -3
- data/doc/code_order.rdoc +12 -2
- data/doc/model_dataset_method_design.rdoc +1 -1
- data/doc/release_notes/5.32.0.txt +46 -0
- data/doc/testing.rdoc +1 -0
- data/lib/sequel/adapters/shared/access.rb +6 -6
- data/lib/sequel/adapters/shared/mssql.rb +5 -5
- data/lib/sequel/adapters/shared/mysql.rb +9 -9
- data/lib/sequel/adapters/shared/oracle.rb +16 -16
- data/lib/sequel/adapters/shared/postgres.rb +18 -8
- data/lib/sequel/adapters/shared/sqlanywhere.rb +9 -9
- data/lib/sequel/adapters/shared/sqlite.rb +1 -0
- data/lib/sequel/connection_pool/sharded_threaded.rb +2 -2
- data/lib/sequel/connection_pool/threaded.rb +1 -1
- data/lib/sequel/core.rb +318 -314
- data/lib/sequel/database/query.rb +1 -1
- data/lib/sequel/extensions/connection_expiration.rb +2 -2
- data/lib/sequel/extensions/connection_validator.rb +2 -2
- data/lib/sequel/extensions/fiber_concurrency.rb +24 -0
- data/lib/sequel/extensions/index_caching.rb +9 -7
- data/lib/sequel/extensions/integer64.rb +2 -0
- data/lib/sequel/extensions/pg_inet.rb +13 -5
- data/lib/sequel/extensions/pg_interval.rb +2 -0
- data/lib/sequel/extensions/pg_range.rb +2 -0
- data/lib/sequel/extensions/pg_timestamptz.rb +2 -0
- data/lib/sequel/extensions/run_transaction_hooks.rb +72 -0
- data/lib/sequel/extensions/server_block.rb +3 -3
- data/lib/sequel/model/base.rb +48 -47
- data/lib/sequel/model/plugins.rb +1 -0
- data/lib/sequel/plugins/association_lazy_eager_option.rb +2 -0
- data/lib/sequel/plugins/association_multi_add_remove.rb +2 -0
- data/lib/sequel/plugins/association_proxies.rb +2 -0
- data/lib/sequel/plugins/boolean_subsets.rb +4 -1
- data/lib/sequel/plugins/class_table_inheritance.rb +26 -26
- data/lib/sequel/plugins/dirty.rb +13 -13
- data/lib/sequel/plugins/json_serializer.rb +3 -7
- data/lib/sequel/plugins/single_table_inheritance.rb +15 -15
- data/lib/sequel/plugins/subclasses.rb +2 -0
- data/lib/sequel/timezones.rb +6 -4
- data/lib/sequel/version.rb +1 -1
- metadata +6 -2
data/lib/sequel/plugins/dirty.rb
CHANGED
@@ -61,6 +61,19 @@ module Sequel
|
|
61
61
|
# that were used in the update statement.
|
62
62
|
attr_reader :previous_changes
|
63
63
|
|
64
|
+
# Reset the initial values after saving.
|
65
|
+
def after_save
|
66
|
+
super
|
67
|
+
reset_initial_values
|
68
|
+
end
|
69
|
+
|
70
|
+
# Save the current changes so they are available after updating. This happens
|
71
|
+
# before after_save resets them.
|
72
|
+
def after_update
|
73
|
+
super
|
74
|
+
@previous_changes = column_changes
|
75
|
+
end
|
76
|
+
|
64
77
|
# An array with the initial value and the current value
|
65
78
|
# of the column, if the column has been changed. If the
|
66
79
|
# column has not been changed, returns nil.
|
@@ -165,19 +178,6 @@ module Sequel
|
|
165
178
|
super
|
166
179
|
end
|
167
180
|
|
168
|
-
# Reset the initial values after saving.
|
169
|
-
def after_save
|
170
|
-
super
|
171
|
-
reset_initial_values
|
172
|
-
end
|
173
|
-
|
174
|
-
# Save the current changes so they are available after updating. This happens
|
175
|
-
# before after_save resets them.
|
176
|
-
def after_update
|
177
|
-
super
|
178
|
-
@previous_changes = column_changes
|
179
|
-
end
|
180
|
-
|
181
181
|
# When changing the column value, save the initial column value. If the column
|
182
182
|
# value is changed back to the initial value, update changed columns to remove
|
183
183
|
# the column.
|
@@ -106,17 +106,13 @@ module Sequel
|
|
106
106
|
# and breaks some aspects of the json_serializer plugin. You can undo the damage
|
107
107
|
# done by active_support/json by doing:
|
108
108
|
#
|
109
|
-
#
|
110
|
-
# def to_json(options = {})
|
111
|
-
# JSON.generate(self)
|
112
|
-
# end
|
113
|
-
# end
|
114
|
-
#
|
115
|
-
# class Hash
|
109
|
+
# module ActiveSupportBrokenJSONFix
|
116
110
|
# def to_json(options = {})
|
117
111
|
# JSON.generate(self)
|
118
112
|
# end
|
119
113
|
# end
|
114
|
+
# Array.send(:prepend, ActiveSupportBrokenJSONFix)
|
115
|
+
# Hash.send(:prepend, ActiveSupportBrokenJSONFix)
|
120
116
|
#
|
121
117
|
# Note that this will probably cause active_support/json to no longer work
|
122
118
|
# correctly in some cases.
|
@@ -163,21 +163,6 @@ module Sequel
|
|
163
163
|
super
|
164
164
|
end
|
165
165
|
|
166
|
-
# Copy the necessary attributes to the subclasses, and filter the
|
167
|
-
# subclass's dataset based on the sti_kep_map entry for the class.
|
168
|
-
def inherited(subclass)
|
169
|
-
super
|
170
|
-
key = Array(sti_key_map[subclass]).dup
|
171
|
-
sti_subclass_added(key)
|
172
|
-
rp = dataset.row_proc
|
173
|
-
subclass.set_dataset(sti_subclass_dataset(key), :inherited=>true)
|
174
|
-
subclass.instance_exec do
|
175
|
-
@dataset = @dataset.with_row_proc(rp)
|
176
|
-
@sti_key_array = key
|
177
|
-
self.simple_table = nil
|
178
|
-
end
|
179
|
-
end
|
180
|
-
|
181
166
|
# Return an instance of the class specified by sti_key,
|
182
167
|
# used by the row_proc.
|
183
168
|
def sti_load(r)
|
@@ -208,6 +193,21 @@ module Sequel
|
|
208
193
|
super
|
209
194
|
end
|
210
195
|
|
196
|
+
# Copy the necessary attributes to the subclasses, and filter the
|
197
|
+
# subclass's dataset based on the sti_kep_map entry for the class.
|
198
|
+
def inherited(subclass)
|
199
|
+
super
|
200
|
+
key = Array(sti_key_map[subclass]).dup
|
201
|
+
sti_subclass_added(key)
|
202
|
+
rp = dataset.row_proc
|
203
|
+
subclass.set_dataset(sti_subclass_dataset(key), :inherited=>true)
|
204
|
+
subclass.instance_exec do
|
205
|
+
@dataset = @dataset.with_row_proc(rp)
|
206
|
+
@sti_key_array = key
|
207
|
+
self.simple_table = nil
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
211
|
# If calling set_dataset manually, make sure to set the dataset
|
212
212
|
# row proc to one that handles inheritance correctly.
|
213
213
|
def set_dataset_row_proc(ds)
|
@@ -63,6 +63,8 @@ module Sequel
|
|
63
63
|
|
64
64
|
Plugins.inherited_instance_variables(self, :@subclasses=>lambda{|v| []}, :@on_subclass=>nil)
|
65
65
|
|
66
|
+
private
|
67
|
+
|
66
68
|
# Add the subclass to this model's current subclasses,
|
67
69
|
# and initialize a new subclasses instance variable
|
68
70
|
# in the subclass.
|
data/lib/sequel/timezones.rb
CHANGED
@@ -4,6 +4,11 @@ module Sequel
|
|
4
4
|
@application_timezone = nil
|
5
5
|
@database_timezone = nil
|
6
6
|
@typecast_timezone = nil
|
7
|
+
@local_offsets = {}
|
8
|
+
|
9
|
+
# Backwards compatible alias
|
10
|
+
Timezones = SequelMethods
|
11
|
+
Deprecation.deprecate_constant(self, :Timezones)
|
7
12
|
|
8
13
|
# Sequel doesn't pay much attention to timezones by default, but you can set it
|
9
14
|
# handle timezones if you want. There are three separate timezone settings, application_timezone,
|
@@ -16,7 +21,7 @@ module Sequel
|
|
16
21
|
# on the environment (e.g. current user), you need to use the +named_timezones+ extension (and use
|
17
22
|
# +DateTime+ as the +datetime_class+). Sequel also ships with a +thread_local_timezones+ extensions
|
18
23
|
# which allows each thread to have its own timezone values for each of the timezones.
|
19
|
-
module
|
24
|
+
module SequelMethods
|
20
25
|
# The timezone you want the application to use. This is the timezone
|
21
26
|
# that incoming times from the database and typecasting are converted to.
|
22
27
|
attr_reader :application_timezone
|
@@ -243,7 +248,4 @@ module Sequel
|
|
243
248
|
Sequel.synchronize{@local_offsets[offset_secs] = Rational(offset_secs, 86400)}
|
244
249
|
end
|
245
250
|
end
|
246
|
-
|
247
|
-
@local_offsets = {}
|
248
|
-
extend Timezones
|
249
251
|
end
|
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 = 32
|
10
10
|
|
11
11
|
# The tiny version of Sequel. Usually 0, only bumped for bugfix
|
12
12
|
# releases that fix regressions from previous versions.
|
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.32.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-05-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -179,6 +179,7 @@ extra_rdoc_files:
|
|
179
179
|
- doc/release_notes/5.29.0.txt
|
180
180
|
- doc/release_notes/5.30.0.txt
|
181
181
|
- doc/release_notes/5.31.0.txt
|
182
|
+
- doc/release_notes/5.32.0.txt
|
182
183
|
files:
|
183
184
|
- CHANGELOG
|
184
185
|
- MIT-LICENSE
|
@@ -231,6 +232,7 @@ files:
|
|
231
232
|
- doc/release_notes/5.3.0.txt
|
232
233
|
- doc/release_notes/5.30.0.txt
|
233
234
|
- doc/release_notes/5.31.0.txt
|
235
|
+
- doc/release_notes/5.32.0.txt
|
234
236
|
- doc/release_notes/5.4.0.txt
|
235
237
|
- doc/release_notes/5.5.0.txt
|
236
238
|
- doc/release_notes/5.6.0.txt
|
@@ -350,6 +352,7 @@ files:
|
|
350
352
|
- lib/sequel/extensions/escaped_like.rb
|
351
353
|
- lib/sequel/extensions/eval_inspect.rb
|
352
354
|
- lib/sequel/extensions/exclude_or_null.rb
|
355
|
+
- lib/sequel/extensions/fiber_concurrency.rb
|
353
356
|
- lib/sequel/extensions/freeze_datasets.rb
|
354
357
|
- lib/sequel/extensions/from_block.rb
|
355
358
|
- lib/sequel/extensions/graph_each.rb
|
@@ -386,6 +389,7 @@ files:
|
|
386
389
|
- lib/sequel/extensions/pretty_table.rb
|
387
390
|
- lib/sequel/extensions/query.rb
|
388
391
|
- lib/sequel/extensions/round_timestamps.rb
|
392
|
+
- lib/sequel/extensions/run_transaction_hooks.rb
|
389
393
|
- lib/sequel/extensions/s.rb
|
390
394
|
- lib/sequel/extensions/schema_caching.rb
|
391
395
|
- lib/sequel/extensions/schema_dumper.rb
|