sequel 5.36.0 → 5.41.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 +56 -0
- data/MIT-LICENSE +1 -1
- data/README.rdoc +1 -1
- data/doc/cheat_sheet.rdoc +5 -5
- data/doc/code_order.rdoc +0 -12
- data/doc/fork_safety.rdoc +84 -0
- data/doc/opening_databases.rdoc +5 -1
- data/doc/postgresql.rdoc +1 -1
- data/doc/querying.rdoc +3 -3
- data/doc/release_notes/5.37.0.txt +30 -0
- data/doc/release_notes/5.38.0.txt +28 -0
- data/doc/release_notes/5.39.0.txt +19 -0
- data/doc/release_notes/5.40.0.txt +40 -0
- data/doc/release_notes/5.41.0.txt +25 -0
- data/doc/sql.rdoc +1 -1
- data/doc/transactions.rdoc +0 -8
- data/lib/sequel/adapters/jdbc.rb +15 -3
- data/lib/sequel/adapters/jdbc/mysql.rb +4 -4
- data/lib/sequel/adapters/shared/mssql.rb +21 -1
- data/lib/sequel/adapters/shared/oracle.rb +1 -1
- data/lib/sequel/adapters/shared/postgres.rb +6 -4
- data/lib/sequel/adapters/shared/sqlite.rb +35 -1
- data/lib/sequel/core.rb +5 -6
- data/lib/sequel/database/connecting.rb +0 -1
- data/lib/sequel/database/misc.rb +14 -0
- data/lib/sequel/database/schema_generator.rb +6 -0
- data/lib/sequel/database/schema_methods.rb +16 -6
- data/lib/sequel/database/transactions.rb +1 -1
- data/lib/sequel/dataset/actions.rb +10 -6
- data/lib/sequel/dataset/features.rb +10 -0
- data/lib/sequel/dataset/prepared_statements.rb +2 -0
- data/lib/sequel/dataset/sql.rb +32 -10
- data/lib/sequel/extensions/blank.rb +8 -0
- data/lib/sequel/extensions/date_arithmetic.rb +8 -9
- data/lib/sequel/extensions/eval_inspect.rb +2 -0
- data/lib/sequel/extensions/inflector.rb +8 -0
- data/lib/sequel/extensions/migration.rb +9 -1
- data/lib/sequel/extensions/named_timezones.rb +5 -1
- data/lib/sequel/extensions/pg_array.rb +1 -0
- data/lib/sequel/extensions/pg_interval.rb +34 -8
- data/lib/sequel/extensions/pg_row.rb +1 -0
- data/lib/sequel/extensions/pg_row_ops.rb +24 -0
- data/lib/sequel/extensions/query.rb +2 -0
- data/lib/sequel/extensions/schema_dumper.rb +3 -3
- data/lib/sequel/model/associations.rb +28 -4
- data/lib/sequel/model/base.rb +21 -4
- data/lib/sequel/model/plugins.rb +5 -0
- data/lib/sequel/plugins/association_proxies.rb +2 -0
- data/lib/sequel/plugins/auto_validations.rb +15 -1
- data/lib/sequel/plugins/class_table_inheritance.rb +0 -5
- data/lib/sequel/plugins/composition.rb +5 -1
- data/lib/sequel/plugins/constraint_validations.rb +2 -1
- data/lib/sequel/plugins/dataset_associations.rb +4 -1
- data/lib/sequel/plugins/dirty.rb +44 -0
- data/lib/sequel/plugins/nested_attributes.rb +3 -1
- data/lib/sequel/plugins/pg_array_associations.rb +4 -0
- data/lib/sequel/plugins/pg_auto_constraint_validations.rb +2 -0
- data/lib/sequel/plugins/single_table_inheritance.rb +7 -0
- data/lib/sequel/plugins/tree.rb +9 -4
- data/lib/sequel/plugins/validation_helpers.rb +6 -2
- data/lib/sequel/timezones.rb +8 -3
- data/lib/sequel/version.rb +1 -1
- metadata +33 -21
data/lib/sequel/model/base.rb
CHANGED
@@ -508,7 +508,9 @@ module Sequel
|
|
508
508
|
|
509
509
|
m.configure(self, *args, &block) if m.respond_to?(:configure)
|
510
510
|
end
|
511
|
+
# :nocov:
|
511
512
|
ruby2_keywords(:plugin) if respond_to?(:ruby2_keywords, true)
|
513
|
+
# :nocov:
|
512
514
|
|
513
515
|
# Returns primary key attribute hash. If using a composite primary key
|
514
516
|
# value such be an array with values for each primary key in the correct
|
@@ -727,8 +729,14 @@ module Sequel
|
|
727
729
|
im = instance_methods
|
728
730
|
overridable_methods_module.module_eval do
|
729
731
|
meth = :"#{column}="
|
730
|
-
|
731
|
-
|
732
|
+
unless im.include?(column)
|
733
|
+
define_method(column){self[column]}
|
734
|
+
alias_method(column, column)
|
735
|
+
end
|
736
|
+
unless im.include?(meth)
|
737
|
+
define_method(meth){|v| self[column] = v}
|
738
|
+
alias_method(meth, meth)
|
739
|
+
end
|
732
740
|
end
|
733
741
|
end
|
734
742
|
|
@@ -741,8 +749,14 @@ module Sequel
|
|
741
749
|
im = instance_methods
|
742
750
|
columns.each do |column|
|
743
751
|
meth = :"#{column}="
|
744
|
-
|
745
|
-
|
752
|
+
unless im.include?(column)
|
753
|
+
overridable_methods_module.module_eval("def #{column}; self[:#{column}] end", __FILE__, __LINE__)
|
754
|
+
overridable_methods_module.send(:alias_method, column, column)
|
755
|
+
end
|
756
|
+
unless im.include?(meth)
|
757
|
+
overridable_methods_module.module_eval("def #{meth}(v); self[:#{column}] = v end", __FILE__, __LINE__)
|
758
|
+
overridable_methods_module.send(:alias_method, meth, meth)
|
759
|
+
end
|
746
760
|
end
|
747
761
|
end
|
748
762
|
|
@@ -757,7 +771,10 @@ module Sequel
|
|
757
771
|
else
|
758
772
|
define_singleton_method(meth){|*args, &block| dataset.public_send(meth, *args, &block)}
|
759
773
|
end
|
774
|
+
singleton_class.send(:alias_method, meth, meth)
|
775
|
+
# :nocov:
|
760
776
|
singleton_class.send(:ruby2_keywords, meth) if respond_to?(:ruby2_keywords, true)
|
777
|
+
# :nocov:
|
761
778
|
end
|
762
779
|
|
763
780
|
# Get the schema from the database, fall back on checking the columns
|
data/lib/sequel/model/plugins.rb
CHANGED
@@ -31,7 +31,9 @@ module Sequel
|
|
31
31
|
def self.def_dataset_methods(mod, meths)
|
32
32
|
Array(meths).each do |meth|
|
33
33
|
mod.class_eval("def #{meth}(*args, &block); dataset.#{meth}(*args, &block) end", __FILE__, __LINE__)
|
34
|
+
# :nocov:
|
34
35
|
mod.send(:ruby2_keywords, meth) if respond_to?(:ruby2_keywords, true)
|
36
|
+
# :nocov:
|
35
37
|
end
|
36
38
|
end
|
37
39
|
|
@@ -120,6 +122,7 @@ module Sequel
|
|
120
122
|
|
121
123
|
model.send(:define_method, meth, &block)
|
122
124
|
model.send(:private, meth)
|
125
|
+
model.send(:alias_method, meth, meth)
|
123
126
|
call_meth
|
124
127
|
end
|
125
128
|
|
@@ -141,6 +144,8 @@ module Sequel
|
|
141
144
|
keyword = :required
|
142
145
|
when :key, :keyrest
|
143
146
|
keyword ||= true
|
147
|
+
else
|
148
|
+
raise Error, "invalid arg_type passed to _define_sequel_method_arg_numbers: #{arg_type}"
|
144
149
|
end
|
145
150
|
end
|
146
151
|
arity = callable.arity
|
@@ -14,7 +14,9 @@ module Sequel
|
|
14
14
|
# the plugin looks at the database schema for the model's table. To determine
|
15
15
|
# the unique validations, Sequel looks at the indexes on the table. In order
|
16
16
|
# for this plugin to be fully functional, the underlying database adapter needs
|
17
|
-
# to support both schema and index parsing.
|
17
|
+
# to support both schema and index parsing. Additionally, unique validations are
|
18
|
+
# only added for models that select from a simple table, they are not added for models
|
19
|
+
# that select from a subquery or joined dataset.
|
18
20
|
#
|
19
21
|
# This plugin uses the validation_helpers plugin underneath to implement the
|
20
22
|
# validations. It does not allow for any per-column validation message
|
@@ -51,6 +53,11 @@ module Sequel
|
|
51
53
|
# This works for unique_opts, max_length_opts, schema_types_opts,
|
52
54
|
# explicit_not_null_opts, and not_null_opts.
|
53
55
|
#
|
56
|
+
# If you only want auto_validations to add validations to columns that do not already
|
57
|
+
# have an error associated with them, you can use the skip_invalid option:
|
58
|
+
#
|
59
|
+
# Model.plugin :auto_validations, skip_invalid: true
|
60
|
+
#
|
54
61
|
# Usage:
|
55
62
|
#
|
56
63
|
# # Make all model subclass use auto validations (called before loading subclasses)
|
@@ -100,6 +107,13 @@ module Sequel
|
|
100
107
|
h[type] = h[type].merge(type_opts).freeze
|
101
108
|
end
|
102
109
|
end
|
110
|
+
|
111
|
+
if opts[:skip_invalid]
|
112
|
+
[:not_null, :explicit_not_null, :max_length, :schema_types].each do |type|
|
113
|
+
h[type] = h[type].merge(:skip_invalid=>true).freeze
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
103
117
|
@auto_validate_options = h.freeze
|
104
118
|
end
|
105
119
|
end
|
@@ -143,10 +143,14 @@ module Sequel
|
|
143
143
|
compositions[name] = send(composer_meth)
|
144
144
|
end
|
145
145
|
end
|
146
|
-
|
146
|
+
alias_method(name, name)
|
147
|
+
|
148
|
+
meth = :"#{name}="
|
149
|
+
define_method(meth) do |v|
|
147
150
|
modified!
|
148
151
|
compositions[name] = v
|
149
152
|
end
|
153
|
+
alias_method(meth, meth)
|
150
154
|
end
|
151
155
|
end
|
152
156
|
|
@@ -62,7 +62,10 @@ module Sequel
|
|
62
62
|
ret = super
|
63
63
|
r = association_reflection(name)
|
64
64
|
meth = r.returns_array? ? name : pluralize(name).to_sym
|
65
|
-
dataset_module
|
65
|
+
dataset_module do
|
66
|
+
define_method(meth){associated(name)}
|
67
|
+
alias_method(meth, meth)
|
68
|
+
end
|
66
69
|
ret
|
67
70
|
end
|
68
71
|
|
data/lib/sequel/plugins/dirty.rb
CHANGED
@@ -41,6 +41,15 @@ module Sequel
|
|
41
41
|
# artist.column_changes # => {}
|
42
42
|
# artist.previous_changes # => {:name=>['Foo', 'Bar']}
|
43
43
|
#
|
44
|
+
# artist.column_previously_was(:name)
|
45
|
+
# # => 'Foo'
|
46
|
+
# artist.column_previously_changed?(:name)
|
47
|
+
# # => true
|
48
|
+
# artist.column_previously_changed?(:name, from: 'Foo', to: 'Bar')
|
49
|
+
# # => true
|
50
|
+
# artist.column_previously_changed?(:name, from: 'Foo', to: 'Baz')
|
51
|
+
# # => false
|
52
|
+
#
|
44
53
|
# There is one caveat; when used with a column that also uses the
|
45
54
|
# serialization plugin, setting the column back to its original value
|
46
55
|
# after changing it is not correctly detected and will leave an entry
|
@@ -105,6 +114,41 @@ module Sequel
|
|
105
114
|
initial_values.has_key?(column)
|
106
115
|
end
|
107
116
|
|
117
|
+
# Whether the column was previously changed.
|
118
|
+
# Options:
|
119
|
+
# :from :: If given, the previous initial value of the column must match this
|
120
|
+
# :to :: If given, the previous changed value of the column must match this
|
121
|
+
#
|
122
|
+
# update(name: 'Current')
|
123
|
+
# previous_changes # => {:name=>['Initial', 'Current']}
|
124
|
+
# column_previously_changed?(:name) # => true
|
125
|
+
# column_previously_changed?(:id) # => false
|
126
|
+
# column_previously_changed?(:name, from: 'Initial', to: 'Current') # => true
|
127
|
+
# column_previously_changed?(:name, from: 'Foo', to: 'Current') # => false
|
128
|
+
def column_previously_changed?(column, opts=OPTS)
|
129
|
+
return false unless (pc = @previous_changes) && (val = pc[column])
|
130
|
+
|
131
|
+
if opts.has_key?(:from)
|
132
|
+
return false unless val[0] == opts[:from]
|
133
|
+
end
|
134
|
+
|
135
|
+
if opts.has_key?(:to)
|
136
|
+
return false unless val[1] == opts[:to]
|
137
|
+
end
|
138
|
+
|
139
|
+
true
|
140
|
+
end
|
141
|
+
|
142
|
+
# The previous value of the column, which is the initial value of
|
143
|
+
# the column before the object was previously saved.
|
144
|
+
#
|
145
|
+
# initial_value(:name) # => 'Initial'
|
146
|
+
# update(name: 'Current')
|
147
|
+
# column_previously_was(:name) # => 'Initial'
|
148
|
+
def column_previously_was(column)
|
149
|
+
(pc = @previous_changes) && (val = pc[column]) && val[0]
|
150
|
+
end
|
151
|
+
|
108
152
|
# Freeze internal data structures
|
109
153
|
def freeze
|
110
154
|
initial_values.freeze
|
@@ -145,9 +145,11 @@ module Sequel
|
|
145
145
|
# class.
|
146
146
|
def def_nested_attribute_method(reflection)
|
147
147
|
@nested_attributes_module.class_eval do
|
148
|
-
|
148
|
+
meth = :"#{reflection[:name]}_attributes="
|
149
|
+
define_method(meth) do |v|
|
149
150
|
set_nested_attributes(reflection[:name], v)
|
150
151
|
end
|
152
|
+
alias_method meth, meth
|
151
153
|
end
|
152
154
|
end
|
153
155
|
end
|
@@ -520,7 +520,9 @@ module Sequel
|
|
520
520
|
def many_to_pg_array_association_filter_expression(op, ref, obj)
|
521
521
|
pk = ref.qualify(model.table_name, ref.primary_key)
|
522
522
|
key = ref[:key]
|
523
|
+
# :nocov:
|
523
524
|
expr = case obj
|
525
|
+
# :nocov:
|
524
526
|
when Sequel::Model
|
525
527
|
if (assoc_pks = obj.get_column_value(key)) && !assoc_pks.empty?
|
526
528
|
Sequel[pk=>assoc_pks.to_a]
|
@@ -540,7 +542,9 @@ module Sequel
|
|
540
542
|
# Support filtering by pg_array_to_many associations using a subquery.
|
541
543
|
def pg_array_to_many_association_filter_expression(op, ref, obj)
|
542
544
|
key = ref.qualify(model.table_name, ref[:key_column])
|
545
|
+
# :nocov:
|
543
546
|
expr = case obj
|
547
|
+
# :nocov:
|
544
548
|
when Sequel::Model
|
545
549
|
if pkv = obj.get_column_value(ref.primary_key_method)
|
546
550
|
Sequel.pg_array_op(key).contains(Sequel.pg_array([pkv], ref.array_type))
|
@@ -250,7 +250,9 @@ module Sequel
|
|
250
250
|
messages = model.pg_auto_constraint_validations_messages
|
251
251
|
|
252
252
|
unless override
|
253
|
+
# :nocov:
|
253
254
|
case e
|
255
|
+
# :nocov:
|
254
256
|
when Sequel::NotNullConstraintViolation
|
255
257
|
if column = info[:column]
|
256
258
|
add_pg_constraint_validation_error([m.call(column)], messages[:not_null])
|
data/lib/sequel/plugins/tree.rb
CHANGED
@@ -45,6 +45,7 @@ module Sequel
|
|
45
45
|
|
46
46
|
model.instance_exec do
|
47
47
|
@parent_column = opts[:key]
|
48
|
+
@qualified_parent_column = Sequel.deep_qualify(table_name, opts[:key])
|
48
49
|
@tree_order = opts[:order]
|
49
50
|
@parent_association_name = parent
|
50
51
|
@children_association_name = children
|
@@ -59,17 +60,21 @@ module Sequel
|
|
59
60
|
# The column symbol or array of column symbols on which to order the tree.
|
60
61
|
attr_accessor :tree_order
|
61
62
|
|
62
|
-
# The symbol for the column containing the value pointing to the
|
63
|
-
# parent of the
|
63
|
+
# The symbol or array of symbols for the column containing the value pointing to the
|
64
|
+
# parent of the node.
|
64
65
|
attr_accessor :parent_column
|
65
66
|
|
67
|
+
# The qualified identifier or array of qualified identifiers for the column
|
68
|
+
# containing the value pointing to the parent of the node.
|
69
|
+
attr_accessor :qualified_parent_column
|
70
|
+
|
66
71
|
# The association name for the parent association
|
67
72
|
attr_reader :parent_association_name
|
68
73
|
|
69
74
|
# The association name for the children association
|
70
75
|
attr_reader :children_association_name
|
71
76
|
|
72
|
-
Plugins.inherited_instance_variables(self, :@parent_column=>nil, :@tree_order=>nil, :@parent_association_name=>nil, :@children_association_name=>nil)
|
77
|
+
Plugins.inherited_instance_variables(self, :@parent_column=>nil, :@qualified_parent_column=>nil, :@tree_order=>nil, :@parent_association_name=>nil, :@children_association_name=>nil)
|
73
78
|
Plugins.def_dataset_methods(self, [:roots, :roots_dataset])
|
74
79
|
|
75
80
|
# Should freeze tree order if it is an array when freezing the model class.
|
@@ -151,7 +156,7 @@ module Sequel
|
|
151
156
|
#
|
152
157
|
# TreeClass.roots_dataset # => Sequel::Dataset instance
|
153
158
|
def roots_dataset
|
154
|
-
ds = where(Sequel.or(Array(model.
|
159
|
+
ds = where(Sequel.or(Array(model.qualified_parent_column).zip([])))
|
155
160
|
ds = ds.order(*model.tree_order) if model.tree_order
|
156
161
|
ds
|
157
162
|
end
|
@@ -36,6 +36,7 @@ module Sequel
|
|
36
36
|
# :message :: The message to use. Can be a string which is used directly, or a
|
37
37
|
# proc which is called. If the validation method takes a argument before the array of attributes,
|
38
38
|
# that argument is passed as an argument to the proc.
|
39
|
+
# :skip_invalid :: Do not try to validate columns that are already invalid.
|
39
40
|
#
|
40
41
|
# The default validation options for all models can be modified by
|
41
42
|
# overridding the Model#default_validation_helpers_options private method.
|
@@ -281,14 +282,17 @@ module Sequel
|
|
281
282
|
DEFAULT_OPTIONS[type]
|
282
283
|
end
|
283
284
|
|
284
|
-
# Skip validating any attribute that matches one of the allow_* options
|
285
|
+
# Skip validating any attribute that matches one of the allow_* options,
|
286
|
+
# or already has an error if the skip_invalid option is given.
|
287
|
+
#
|
285
288
|
# Otherwise, yield the attribute, value, and passed option :message to
|
286
289
|
# the block. If the block returns anything except nil or false, add it as
|
287
290
|
# an error message for that attributes.
|
288
291
|
def validatable_attributes(atts, opts)
|
289
|
-
am, an, ab, m = opts.values_at(:allow_missing, :allow_nil, :allow_blank, :message)
|
292
|
+
am, an, ab, m, si = opts.values_at(:allow_missing, :allow_nil, :allow_blank, :message, :skip_invalid)
|
290
293
|
from_values = opts[:from] == :values
|
291
294
|
Array(atts).each do |a|
|
295
|
+
next if si && errors.on(a)
|
292
296
|
next if am && !values.has_key?(a)
|
293
297
|
v = from_values ? values[a] : get_column_value(a)
|
294
298
|
next if an && v.nil?
|
data/lib/sequel/timezones.rb
CHANGED
@@ -10,9 +10,14 @@ module Sequel
|
|
10
10
|
Timezones = SequelMethods
|
11
11
|
Deprecation.deprecate_constant(self, :Timezones)
|
12
12
|
|
13
|
-
# Sequel doesn't pay much attention to timezones by default, but you can set it
|
14
|
-
# handle timezones if you want. There are three separate timezone settings
|
15
|
-
#
|
13
|
+
# Sequel doesn't pay much attention to timezones by default, but you can set it to
|
14
|
+
# handle timezones if you want. There are three separate timezone settings:
|
15
|
+
#
|
16
|
+
# * application_timezone
|
17
|
+
# * database_timezone
|
18
|
+
# * typecast_timezone
|
19
|
+
#
|
20
|
+
# All three timezones have getter and setter methods.
|
16
21
|
# You can set all three timezones to the same value at once via <tt>Sequel.default_timezone=</tt>.
|
17
22
|
#
|
18
23
|
# The only timezone values that are supported by default are <tt>:utc</tt> (convert to UTC),
|
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 = 41
|
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.41.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:
|
11
|
+
date: 2021-02-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -117,9 +117,8 @@ extra_rdoc_files:
|
|
117
117
|
- README.rdoc
|
118
118
|
- CHANGELOG
|
119
119
|
- MIT-LICENSE
|
120
|
-
- doc/association_basics.rdoc
|
121
|
-
- doc/model_dataset_method_design.rdoc
|
122
120
|
- doc/advanced_associations.rdoc
|
121
|
+
- doc/association_basics.rdoc
|
123
122
|
- doc/bin_sequel.rdoc
|
124
123
|
- doc/cheat_sheet.rdoc
|
125
124
|
- doc/code_order.rdoc
|
@@ -127,36 +126,30 @@ extra_rdoc_files:
|
|
127
126
|
- doc/dataset_basics.rdoc
|
128
127
|
- doc/dataset_filtering.rdoc
|
129
128
|
- doc/extensions.rdoc
|
129
|
+
- doc/fork_safety.rdoc
|
130
130
|
- doc/mass_assignment.rdoc
|
131
131
|
- doc/migration.rdoc
|
132
|
-
- doc/
|
132
|
+
- doc/model_dataset_method_design.rdoc
|
133
133
|
- doc/model_hooks.rdoc
|
134
134
|
- doc/model_plugins.rdoc
|
135
|
-
- doc/object_model.rdoc
|
136
|
-
- doc/sql.rdoc
|
137
135
|
- doc/mssql_stored_procedures.rdoc
|
138
|
-
- doc/
|
136
|
+
- doc/object_model.rdoc
|
137
|
+
- doc/opening_databases.rdoc
|
139
138
|
- doc/postgresql.rdoc
|
140
|
-
- doc/querying.rdoc
|
141
139
|
- doc/prepared_statements.rdoc
|
140
|
+
- doc/querying.rdoc
|
142
141
|
- doc/reflection.rdoc
|
143
|
-
- doc/security.rdoc
|
144
|
-
- doc/virtual_rows.rdoc
|
145
142
|
- doc/schema_modification.rdoc
|
143
|
+
- doc/security.rdoc
|
146
144
|
- doc/sharding.rdoc
|
145
|
+
- doc/sql.rdoc
|
147
146
|
- doc/testing.rdoc
|
148
|
-
- doc/
|
147
|
+
- doc/thread_safety.rdoc
|
149
148
|
- doc/transactions.rdoc
|
150
|
-
- doc/
|
151
|
-
- doc/
|
149
|
+
- doc/validations.rdoc
|
150
|
+
- doc/virtual_rows.rdoc
|
152
151
|
- doc/release_notes/5.0.0.txt
|
153
152
|
- doc/release_notes/5.1.0.txt
|
154
|
-
- doc/release_notes/5.2.0.txt
|
155
|
-
- doc/release_notes/5.3.0.txt
|
156
|
-
- doc/release_notes/5.4.0.txt
|
157
|
-
- doc/release_notes/5.8.0.txt
|
158
|
-
- doc/release_notes/5.7.0.txt
|
159
|
-
- doc/release_notes/5.9.0.txt
|
160
153
|
- doc/release_notes/5.10.0.txt
|
161
154
|
- doc/release_notes/5.11.0.txt
|
162
155
|
- doc/release_notes/5.12.0.txt
|
@@ -167,6 +160,7 @@ extra_rdoc_files:
|
|
167
160
|
- doc/release_notes/5.17.0.txt
|
168
161
|
- doc/release_notes/5.18.0.txt
|
169
162
|
- doc/release_notes/5.19.0.txt
|
163
|
+
- doc/release_notes/5.2.0.txt
|
170
164
|
- doc/release_notes/5.20.0.txt
|
171
165
|
- doc/release_notes/5.21.0.txt
|
172
166
|
- doc/release_notes/5.22.0.txt
|
@@ -177,6 +171,7 @@ extra_rdoc_files:
|
|
177
171
|
- doc/release_notes/5.27.0.txt
|
178
172
|
- doc/release_notes/5.28.0.txt
|
179
173
|
- doc/release_notes/5.29.0.txt
|
174
|
+
- doc/release_notes/5.3.0.txt
|
180
175
|
- doc/release_notes/5.30.0.txt
|
181
176
|
- doc/release_notes/5.31.0.txt
|
182
177
|
- doc/release_notes/5.32.0.txt
|
@@ -184,6 +179,17 @@ extra_rdoc_files:
|
|
184
179
|
- doc/release_notes/5.34.0.txt
|
185
180
|
- doc/release_notes/5.35.0.txt
|
186
181
|
- doc/release_notes/5.36.0.txt
|
182
|
+
- doc/release_notes/5.37.0.txt
|
183
|
+
- doc/release_notes/5.38.0.txt
|
184
|
+
- doc/release_notes/5.39.0.txt
|
185
|
+
- doc/release_notes/5.4.0.txt
|
186
|
+
- doc/release_notes/5.40.0.txt
|
187
|
+
- doc/release_notes/5.41.0.txt
|
188
|
+
- doc/release_notes/5.5.0.txt
|
189
|
+
- doc/release_notes/5.6.0.txt
|
190
|
+
- doc/release_notes/5.7.0.txt
|
191
|
+
- doc/release_notes/5.8.0.txt
|
192
|
+
- doc/release_notes/5.9.0.txt
|
187
193
|
files:
|
188
194
|
- CHANGELOG
|
189
195
|
- MIT-LICENSE
|
@@ -198,6 +204,7 @@ files:
|
|
198
204
|
- doc/dataset_basics.rdoc
|
199
205
|
- doc/dataset_filtering.rdoc
|
200
206
|
- doc/extensions.rdoc
|
207
|
+
- doc/fork_safety.rdoc
|
201
208
|
- doc/mass_assignment.rdoc
|
202
209
|
- doc/migration.rdoc
|
203
210
|
- doc/model_dataset_method_design.rdoc
|
@@ -241,7 +248,12 @@ files:
|
|
241
248
|
- doc/release_notes/5.34.0.txt
|
242
249
|
- doc/release_notes/5.35.0.txt
|
243
250
|
- doc/release_notes/5.36.0.txt
|
251
|
+
- doc/release_notes/5.37.0.txt
|
252
|
+
- doc/release_notes/5.38.0.txt
|
253
|
+
- doc/release_notes/5.39.0.txt
|
244
254
|
- doc/release_notes/5.4.0.txt
|
255
|
+
- doc/release_notes/5.40.0.txt
|
256
|
+
- doc/release_notes/5.41.0.txt
|
245
257
|
- doc/release_notes/5.5.0.txt
|
246
258
|
- doc/release_notes/5.6.0.txt
|
247
259
|
- doc/release_notes/5.7.0.txt
|
@@ -547,7 +559,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
547
559
|
- !ruby/object:Gem::Version
|
548
560
|
version: '0'
|
549
561
|
requirements: []
|
550
|
-
rubygems_version: 3.
|
562
|
+
rubygems_version: 3.2.3
|
551
563
|
signing_key:
|
552
564
|
specification_version: 4
|
553
565
|
summary: The Database Toolkit for Ruby
|