sequel 5.35.0 → 5.40.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +68 -0
- data/README.rdoc +2 -2
- data/doc/cheat_sheet.rdoc +5 -5
- data/doc/code_order.rdoc +0 -12
- data/doc/fork_safety.rdoc +84 -0
- data/doc/model_plugins.rdoc +1 -1
- data/doc/opening_databases.rdoc +5 -1
- data/doc/postgresql.rdoc +1 -1
- data/doc/querying.rdoc +3 -3
- data/doc/release_notes/5.36.0.txt +60 -0
- 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/transactions.rdoc +0 -8
- data/doc/validations.rdoc +1 -1
- data/lib/sequel/adapters/jdbc.rb +15 -3
- data/lib/sequel/adapters/jdbc/mysql.rb +4 -4
- data/lib/sequel/adapters/odbc.rb +4 -6
- data/lib/sequel/adapters/shared/mssql.rb +35 -5
- data/lib/sequel/adapters/shared/oracle.rb +13 -7
- data/lib/sequel/adapters/shared/postgres.rb +40 -2
- data/lib/sequel/adapters/shared/sqlite.rb +35 -1
- data/lib/sequel/adapters/utils/mysql_mysql2.rb +1 -0
- 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 +2 -2
- 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 +6 -0
- data/lib/sequel/extensions/date_arithmetic.rb +6 -3
- data/lib/sequel/extensions/eval_inspect.rb +2 -0
- data/lib/sequel/extensions/inflector.rb +6 -0
- data/lib/sequel/extensions/migration.rb +10 -1
- data/lib/sequel/extensions/pg_array.rb +1 -0
- data/lib/sequel/extensions/pg_interval.rb +22 -6
- data/lib/sequel/extensions/pg_json_ops.rb +44 -2
- 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 +3 -0
- data/lib/sequel/extensions/schema_dumper.rb +3 -3
- data/lib/sequel/model.rb +1 -1
- data/lib/sequel/model/associations.rb +1 -0
- data/lib/sequel/model/base.rb +23 -4
- data/lib/sequel/model/plugins.rb +6 -0
- data/lib/sequel/plugins/association_proxies.rb +3 -0
- 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/timezones.rb +8 -3
- data/lib/sequel/version.rb +1 -1
- metadata +33 -21
@@ -158,6 +158,30 @@ module Sequel
|
|
158
158
|
end
|
159
159
|
end
|
160
160
|
end
|
161
|
+
|
162
|
+
# :nocov:
|
163
|
+
if defined?(PGRow::ArrayRow)
|
164
|
+
# :nocov:
|
165
|
+
class PGRow::ArrayRow
|
166
|
+
# Wrap the PGRow::ArrayRow instance in an PGRowOp, allowing you to easily use
|
167
|
+
# the PostgreSQL row functions and operators with literal rows.
|
168
|
+
def op
|
169
|
+
Sequel.pg_row_op(self)
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
# :nocov:
|
175
|
+
if defined?(PGRow::HashRow)
|
176
|
+
# :nocov:
|
177
|
+
class PGRow::HashRow
|
178
|
+
# Wrap the PGRow::ArrayRow instance in an PGRowOp, allowing you to easily use
|
179
|
+
# the PostgreSQL row functions and operators with literal rows.
|
180
|
+
def op
|
181
|
+
Sequel.pg_row_op(self)
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
161
185
|
end
|
162
186
|
|
163
187
|
module SQL::Builders
|
@@ -37,7 +37,7 @@ module Sequel
|
|
37
37
|
{:type =>schema[:type] == :boolean ? TrueClass : Integer}
|
38
38
|
when /\Abigint(?:\((?:\d+)\))?(?: unsigned)?\z/
|
39
39
|
{:type=>:Bignum}
|
40
|
-
when /\A(?:real|float
|
40
|
+
when /\A(?:real|float|double(?: precision)?|double\(\d+,\d+\))(?: unsigned)?\z/
|
41
41
|
{:type=>Float}
|
42
42
|
when 'boolean', 'bit', 'bool'
|
43
43
|
{:type=>TrueClass}
|
@@ -57,7 +57,7 @@ module Sequel
|
|
57
57
|
{:type=>String, :size=>($1.to_i if $1)}
|
58
58
|
when /\A(?:small)?money\z/
|
59
59
|
{:type=>BigDecimal, :size=>[19,2]}
|
60
|
-
when /\A(?:decimal|numeric|number)(?:\((\d+)(?:,\s*(\d+))?\))?\z/
|
60
|
+
when /\A(?:decimal|numeric|number)(?:\((\d+)(?:,\s*(\d+))?\))?(?: unsigned)?\z/
|
61
61
|
s = [($1.to_i if $1), ($2.to_i if $2)].compact
|
62
62
|
{:type=>BigDecimal, :size=>(s.empty? ? nil : s)}
|
63
63
|
when /\A(?:bytea|(?:tiny|medium|long)?blob|(?:var)?binary)(?:\((\d+)\))?\z/
|
@@ -218,7 +218,7 @@ END_MIG
|
|
218
218
|
gen.foreign_key(name, table, col_opts)
|
219
219
|
else
|
220
220
|
gen.column(name, type, col_opts)
|
221
|
-
if [Integer, :Bignum, Float].include?(type) && schema[:db_type] =~ / unsigned\z/io
|
221
|
+
if [Integer, :Bignum, Float, BigDecimal].include?(type) && schema[:db_type] =~ / unsigned\z/io
|
222
222
|
gen.check(Sequel::SQL::Identifier.new(name) >= 0)
|
223
223
|
end
|
224
224
|
end
|
data/lib/sequel/model.rb
CHANGED
@@ -79,7 +79,7 @@ module Sequel
|
|
79
79
|
def_Model(::Sequel)
|
80
80
|
|
81
81
|
# The setter methods (methods ending with =) that are never allowed
|
82
|
-
# to be called automatically via +set+/+update+/+new+/etc
|
82
|
+
# to be called automatically via +set+/+update+/+new+/etc.
|
83
83
|
RESTRICTED_SETTER_METHODS = instance_methods.map(&:to_s).select{|l| l.end_with?('=')}.freeze
|
84
84
|
end
|
85
85
|
end
|
@@ -1930,6 +1930,7 @@ module Sequel
|
|
1930
1930
|
# super to be called.
|
1931
1931
|
def association_module_def(name, opts=OPTS, &block)
|
1932
1932
|
association_module(opts).send(:define_method, name, &block)
|
1933
|
+
association_module(opts).send(:alias_method, name, name)
|
1933
1934
|
end
|
1934
1935
|
|
1935
1936
|
# Add a private method to the module included in the class.
|
data/lib/sequel/model/base.rb
CHANGED
@@ -508,6 +508,9 @@ module Sequel
|
|
508
508
|
|
509
509
|
m.configure(self, *args, &block) if m.respond_to?(:configure)
|
510
510
|
end
|
511
|
+
# :nocov:
|
512
|
+
ruby2_keywords(:plugin) if respond_to?(:ruby2_keywords, true)
|
513
|
+
# :nocov:
|
511
514
|
|
512
515
|
# Returns primary key attribute hash. If using a composite primary key
|
513
516
|
# value such be an array with values for each primary key in the correct
|
@@ -726,8 +729,14 @@ module Sequel
|
|
726
729
|
im = instance_methods
|
727
730
|
overridable_methods_module.module_eval do
|
728
731
|
meth = :"#{column}="
|
729
|
-
|
730
|
-
|
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
|
731
740
|
end
|
732
741
|
end
|
733
742
|
|
@@ -740,8 +749,14 @@ module Sequel
|
|
740
749
|
im = instance_methods
|
741
750
|
columns.each do |column|
|
742
751
|
meth = :"#{column}="
|
743
|
-
|
744
|
-
|
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
|
745
760
|
end
|
746
761
|
end
|
747
762
|
|
@@ -756,6 +771,10 @@ module Sequel
|
|
756
771
|
else
|
757
772
|
define_singleton_method(meth){|*args, &block| dataset.public_send(meth, *args, &block)}
|
758
773
|
end
|
774
|
+
singleton_class.send(:alias_method, meth, meth)
|
775
|
+
# :nocov:
|
776
|
+
singleton_class.send(:ruby2_keywords, meth) if respond_to?(:ruby2_keywords, true)
|
777
|
+
# :nocov:
|
759
778
|
end
|
760
779
|
|
761
780
|
# Get the schema from the database, fall back on checking the columns
|
data/lib/sequel/model/plugins.rb
CHANGED
@@ -31,6 +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:
|
35
|
+
mod.send(:ruby2_keywords, meth) if respond_to?(:ruby2_keywords, true)
|
36
|
+
# :nocov:
|
34
37
|
end
|
35
38
|
end
|
36
39
|
|
@@ -119,6 +122,7 @@ module Sequel
|
|
119
122
|
|
120
123
|
model.send(:define_method, meth, &block)
|
121
124
|
model.send(:private, meth)
|
125
|
+
model.send(:alias_method, meth, meth)
|
122
126
|
call_meth
|
123
127
|
end
|
124
128
|
|
@@ -140,6 +144,8 @@ module Sequel
|
|
140
144
|
keyword = :required
|
141
145
|
when :key, :keyrest
|
142
146
|
keyword ||= true
|
147
|
+
else
|
148
|
+
raise Error, "invalid arg_type passed to _define_sequel_method_arg_numbers: #{arg_type}"
|
143
149
|
end
|
144
150
|
end
|
145
151
|
arity = callable.arity
|
@@ -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
|
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 = 40
|
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.40.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-01-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,12 +171,24 @@ 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
|
183
178
|
- doc/release_notes/5.33.0.txt
|
184
179
|
- doc/release_notes/5.34.0.txt
|
185
180
|
- doc/release_notes/5.35.0.txt
|
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.5.0.txt
|
188
|
+
- doc/release_notes/5.6.0.txt
|
189
|
+
- doc/release_notes/5.7.0.txt
|
190
|
+
- doc/release_notes/5.8.0.txt
|
191
|
+
- doc/release_notes/5.9.0.txt
|
186
192
|
files:
|
187
193
|
- CHANGELOG
|
188
194
|
- MIT-LICENSE
|
@@ -197,6 +203,7 @@ files:
|
|
197
203
|
- doc/dataset_basics.rdoc
|
198
204
|
- doc/dataset_filtering.rdoc
|
199
205
|
- doc/extensions.rdoc
|
206
|
+
- doc/fork_safety.rdoc
|
200
207
|
- doc/mass_assignment.rdoc
|
201
208
|
- doc/migration.rdoc
|
202
209
|
- doc/model_dataset_method_design.rdoc
|
@@ -239,7 +246,12 @@ files:
|
|
239
246
|
- doc/release_notes/5.33.0.txt
|
240
247
|
- doc/release_notes/5.34.0.txt
|
241
248
|
- doc/release_notes/5.35.0.txt
|
249
|
+
- doc/release_notes/5.36.0.txt
|
250
|
+
- doc/release_notes/5.37.0.txt
|
251
|
+
- doc/release_notes/5.38.0.txt
|
252
|
+
- doc/release_notes/5.39.0.txt
|
242
253
|
- doc/release_notes/5.4.0.txt
|
254
|
+
- doc/release_notes/5.40.0.txt
|
243
255
|
- doc/release_notes/5.5.0.txt
|
244
256
|
- doc/release_notes/5.6.0.txt
|
245
257
|
- doc/release_notes/5.7.0.txt
|
@@ -545,7 +557,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
545
557
|
- !ruby/object:Gem::Version
|
546
558
|
version: '0'
|
547
559
|
requirements: []
|
548
|
-
rubygems_version: 3.
|
560
|
+
rubygems_version: 3.2.3
|
549
561
|
signing_key:
|
550
562
|
specification_version: 4
|
551
563
|
summary: The Database Toolkit for Ruby
|