activerecord 6.1.4.7 → 6.1.6
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of activerecord might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +101 -12
- data/MIT-LICENSE +1 -1
- data/lib/active_record/associations/collection_association.rb +16 -8
- data/lib/active_record/associations/preloader/association.rb +1 -3
- data/lib/active_record/connection_adapters/abstract/connection_pool.rb +1 -1
- data/lib/active_record/connection_adapters/abstract/quoting.rb +3 -3
- data/lib/active_record/connection_adapters/abstract/schema_definitions.rb +4 -0
- data/lib/active_record/connection_adapters/mysql/database_statements.rb +2 -0
- data/lib/active_record/connection_adapters/mysql/schema_statements.rb +4 -1
- data/lib/active_record/connection_adapters/postgresql/database_statements.rb +2 -0
- data/lib/active_record/connection_adapters/schema_cache.rb +34 -10
- data/lib/active_record/connection_adapters/sqlite3/database_statements.rb +2 -0
- data/lib/active_record/connection_handling.rb +2 -2
- data/lib/active_record/core.rb +2 -2
- data/lib/active_record/database_configurations/connection_url_resolver.rb +1 -0
- data/lib/active_record/database_configurations/hash_config.rb +1 -1
- data/lib/active_record/database_configurations.rb +2 -1
- data/lib/active_record/gem_version.rb +2 -2
- data/lib/active_record/internal_metadata.rb +2 -0
- data/lib/active_record/legacy_yaml_adapter.rb +1 -1
- data/lib/active_record/migration/compatibility.rb +9 -6
- data/lib/active_record/model_schema.rb +1 -1
- data/lib/active_record/railties/databases.rake +8 -8
- data/lib/active_record/relation/calculations.rb +2 -2
- data/lib/active_record/relation/finder_methods.rb +1 -1
- data/lib/active_record/relation/query_methods.rb +2 -2
- data/lib/active_record/relation/where_clause.rb +2 -2
- data/lib/active_record/tasks/database_tasks.rb +1 -1
- data/lib/active_record.rb +1 -1
- metadata +11 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 54622177a779de0ac72e77ff40350f3da47eb92b97cffcd94cf549e6763fe885
|
4
|
+
data.tar.gz: 52e2705225e9b01f78a1138035f714b45858a8ad54a563abbb79f789cf8e2fdf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b4bb57d1557725397dc7ac759baeccc90f7c5e682d8aaf2a002504ad9146623337c1fa1fa066f4494ffa81873b832379b07e76393649ff74197b6297a54c46f8
|
7
|
+
data.tar.gz: aefdefba9747cf9bb6399bfa84aa24f521a8f34274089411d8cb7c7c0b0c5c0749607c0a68dff123ec6fadca80d597f19d71dabb802bc71c37d5e2927ed535ca
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,92 @@
|
|
1
|
+
## Rails 6.1.5.1 (April 26, 2022) ##
|
2
|
+
|
3
|
+
* No changes.
|
4
|
+
|
5
|
+
|
6
|
+
## Rails 6.1.5 (March 09, 2022) ##
|
7
|
+
|
8
|
+
* Fix `ActiveRecord::ConnectionAdapters::SchemaCache#deep_deduplicate` for Ruby 2.6.
|
9
|
+
|
10
|
+
Ruby 2.6 and 2.7 have slightly different implementations of the `String#-@` method.
|
11
|
+
In Ruby 2.6, the receiver of the `String#-@` method is modified under certain circumstances.
|
12
|
+
This was later identified as a bug (https://bugs.ruby-lang.org/issues/15926) and only
|
13
|
+
fixed in Ruby 2.7.
|
14
|
+
|
15
|
+
Before the changes in this commit, the
|
16
|
+
`ActiveRecord::ConnectionAdapters::SchemaCache#deep_deduplicate` method, which internally
|
17
|
+
calls the `String#-@` method, could also modify an input string argument in Ruby 2.6 --
|
18
|
+
changing a tainted, unfrozen string into a tainted, frozen string.
|
19
|
+
|
20
|
+
Fixes #43056
|
21
|
+
|
22
|
+
*Eric O'Hanlon*
|
23
|
+
|
24
|
+
* Fix migration compatibility to create SQLite references/belongs_to column as integer when
|
25
|
+
migration version is 6.0.
|
26
|
+
|
27
|
+
`reference`/`belongs_to` in migrations with version 6.0 were creating columns as
|
28
|
+
bigint instead of integer for the SQLite Adapter.
|
29
|
+
|
30
|
+
*Marcelo Lauxen*
|
31
|
+
|
32
|
+
* Fix dbconsole for 3-tier config.
|
33
|
+
|
34
|
+
*Eileen M. Uchitelle*
|
35
|
+
|
36
|
+
* Better handle SQL queries with invalid encoding.
|
37
|
+
|
38
|
+
```ruby
|
39
|
+
Post.create(name: "broken \xC8 UTF-8")
|
40
|
+
```
|
41
|
+
|
42
|
+
Would cause all adapters to fail in a non controlled way in the code
|
43
|
+
responsible to detect write queries.
|
44
|
+
|
45
|
+
The query is now properly passed to the database connection, which might or might
|
46
|
+
not be able to handle it, but will either succeed or failed in a more correct way.
|
47
|
+
|
48
|
+
*Jean Boussier*
|
49
|
+
|
50
|
+
* Ignore persisted in-memory records when merging target lists.
|
51
|
+
|
52
|
+
*Kevin Sjöberg*
|
53
|
+
|
54
|
+
* Fix regression bug that caused ignoring additional conditions for preloading
|
55
|
+
`has_many` through relations.
|
56
|
+
|
57
|
+
Fixes #43132
|
58
|
+
|
59
|
+
*Alexander Pauly*
|
60
|
+
|
61
|
+
* Fix `ActiveRecord::InternalMetadata` to not be broken by
|
62
|
+
`config.active_record.record_timestamps = false`
|
63
|
+
|
64
|
+
Since the model always create the timestamp columns, it has to set them, otherwise it breaks
|
65
|
+
various DB management tasks.
|
66
|
+
|
67
|
+
Fixes #42983
|
68
|
+
|
69
|
+
*Jean Boussier*
|
70
|
+
|
71
|
+
* Fix duplicate active record objects on `inverse_of`.
|
72
|
+
|
73
|
+
*Justin Carvalho*
|
74
|
+
|
75
|
+
* Fix duplicate objects stored in has many association after save.
|
76
|
+
|
77
|
+
Fixes #42549.
|
78
|
+
|
79
|
+
*Alex Ghiculescu*
|
80
|
+
|
81
|
+
* Fix performance regression in `CollectionAssocation#build`.
|
82
|
+
|
83
|
+
*Alex Ghiculescu*
|
84
|
+
|
85
|
+
* Fix retrieving default value for text column for MariaDB.
|
86
|
+
|
87
|
+
*fatkodima*
|
88
|
+
|
89
|
+
|
1
90
|
## Rails 6.1.4.7 (March 08, 2022) ##
|
2
91
|
|
3
92
|
* No changes.
|
@@ -102,10 +191,10 @@
|
|
102
191
|
```
|
103
192
|
|
104
193
|
In the example, `dog.treats` would still raise even though
|
105
|
-
`strict_loading` was set to false. This is a bug
|
106
|
-
Active Storage which is why I made this PR
|
194
|
+
`strict_loading` was set to false. This is a bug affecting more than
|
195
|
+
Active Storage which is why I made this PR superseding #41461. We need
|
107
196
|
to fix this for all applications since the behavior is a little
|
108
|
-
surprising. I took the test from
|
197
|
+
surprising. I took the test from #41461 and the code suggestion from #41453
|
109
198
|
with some additions.
|
110
199
|
|
111
200
|
*Eileen M. Uchitelle*, *Radamés Roriz*
|
@@ -607,7 +696,7 @@
|
|
607
696
|
|
608
697
|
attribute :duration, :interval
|
609
698
|
|
610
|
-
To keep old behavior until
|
699
|
+
To keep old behavior until 7.0 is released:
|
611
700
|
|
612
701
|
attribute :duration, :string
|
613
702
|
|
@@ -779,8 +868,8 @@
|
|
779
868
|
*Ryuta Kamizono*
|
780
869
|
|
781
870
|
* Merging conditions on the same column no longer maintain both conditions,
|
782
|
-
and will be consistently replaced by the latter condition in Rails
|
783
|
-
To migrate to Rails
|
871
|
+
and will be consistently replaced by the latter condition in Rails 7.0.
|
872
|
+
To migrate to Rails 7.0's behavior, use `relation.merge(other, rewhere: true)`.
|
784
873
|
|
785
874
|
```ruby
|
786
875
|
# Rails 6.1 (IN clause is replaced by merger side equality condition)
|
@@ -789,10 +878,10 @@
|
|
789
878
|
# Rails 6.1 (both conflict conditions exists, deprecated)
|
790
879
|
Author.where(id: david.id..mary.id).merge(Author.where(id: bob)) # => []
|
791
880
|
|
792
|
-
# Rails 6.1 with rewhere to migrate to Rails
|
881
|
+
# Rails 6.1 with rewhere to migrate to Rails 7.0's behavior
|
793
882
|
Author.where(id: david.id..mary.id).merge(Author.where(id: bob), rewhere: true) # => [bob]
|
794
883
|
|
795
|
-
# Rails
|
884
|
+
# Rails 7.0 (same behavior with IN clause, mergee side condition is consistently replaced)
|
796
885
|
Author.where(id: [david.id, mary.id]).merge(Author.where(id: bob)) # => [bob]
|
797
886
|
Author.where(id: david.id..mary.id).merge(Author.where(id: bob)) # => [bob]
|
798
887
|
```
|
@@ -884,7 +973,7 @@
|
|
884
973
|
|
885
974
|
* Deprecate aggregations with group by duplicated fields.
|
886
975
|
|
887
|
-
To migrate to Rails
|
976
|
+
To migrate to Rails 7.0's behavior, use `uniq!(:group)` to deduplicate group fields.
|
888
977
|
|
889
978
|
```ruby
|
890
979
|
accounts = Account.group(:firm_id)
|
@@ -908,7 +997,7 @@
|
|
908
997
|
|
909
998
|
* Deprecate duplicated query annotations.
|
910
999
|
|
911
|
-
To migrate to Rails
|
1000
|
+
To migrate to Rails 7.0's behavior, use `uniq!(:annotate)` to deduplicate query annotations.
|
912
1001
|
|
913
1002
|
```ruby
|
914
1003
|
accounts = Account.where(id: [1, 2]).annotate("david and mary")
|
@@ -1329,13 +1418,13 @@
|
|
1329
1418
|
|
1330
1419
|
* Deprecate `#remove_connection` in favor of `#remove_connection_pool` when called on the handler.
|
1331
1420
|
|
1332
|
-
`#remove_connection` is deprecated in order to support returning a `DatabaseConfig` object instead of a `Hash`. Use `#remove_connection_pool`, `#remove_connection` will be removed in
|
1421
|
+
`#remove_connection` is deprecated in order to support returning a `DatabaseConfig` object instead of a `Hash`. Use `#remove_connection_pool`, `#remove_connection` will be removed in Rails 7.0.
|
1333
1422
|
|
1334
1423
|
*Eileen M. Uchitelle*, *John Crepezzi*
|
1335
1424
|
|
1336
1425
|
* Deprecate `#default_hash` and it's alias `#[]` on database configurations.
|
1337
1426
|
|
1338
|
-
Applications should use `configs_for`. `#default_hash` and `#[]` will be removed in
|
1427
|
+
Applications should use `configs_for`. `#default_hash` and `#[]` will be removed in Rails 7.0.
|
1339
1428
|
|
1340
1429
|
*Eileen M. Uchitelle*, *John Crepezzi*
|
1341
1430
|
|
data/MIT-LICENSE
CHANGED
@@ -75,6 +75,7 @@ module ActiveRecord
|
|
75
75
|
def reset
|
76
76
|
super
|
77
77
|
@target = []
|
78
|
+
@replaced_or_added_targets = Set.new
|
78
79
|
@association_ids = nil
|
79
80
|
end
|
80
81
|
|
@@ -279,10 +280,7 @@ module ActiveRecord
|
|
279
280
|
end
|
280
281
|
|
281
282
|
def add_to_target(record, skip_callbacks: false, replace: false, &block)
|
282
|
-
|
283
|
-
index = @target.index(record)
|
284
|
-
end
|
285
|
-
replace_on_target(record, index, skip_callbacks, &block)
|
283
|
+
replace_on_target(record, skip_callbacks, replace: replace || association_scope.distinct_value, &block)
|
286
284
|
end
|
287
285
|
|
288
286
|
def target=(record)
|
@@ -292,7 +290,7 @@ module ActiveRecord
|
|
292
290
|
when Array
|
293
291
|
super
|
294
292
|
else
|
295
|
-
|
293
|
+
replace_on_target(record, true, replace: true, inversing: true)
|
296
294
|
end
|
297
295
|
end
|
298
296
|
|
@@ -342,7 +340,7 @@ module ActiveRecord
|
|
342
340
|
end
|
343
341
|
end
|
344
342
|
|
345
|
-
persisted + memory
|
343
|
+
persisted + memory.reject(&:persisted?)
|
346
344
|
end
|
347
345
|
|
348
346
|
def _create_record(attributes, raise = false, &block)
|
@@ -425,7 +423,7 @@ module ActiveRecord
|
|
425
423
|
common_records = intersection(new_target, original_target)
|
426
424
|
common_records.each do |record|
|
427
425
|
skip_callbacks = true
|
428
|
-
replace_on_target(record,
|
426
|
+
replace_on_target(record, skip_callbacks, replace: true)
|
429
427
|
end
|
430
428
|
end
|
431
429
|
|
@@ -448,7 +446,11 @@ module ActiveRecord
|
|
448
446
|
records
|
449
447
|
end
|
450
448
|
|
451
|
-
def replace_on_target(record,
|
449
|
+
def replace_on_target(record, skip_callbacks, replace:, inversing: false)
|
450
|
+
if replace && (!record.new_record? || @replaced_or_added_targets.include?(record))
|
451
|
+
index = @target.index(record)
|
452
|
+
end
|
453
|
+
|
452
454
|
catch(:abort) do
|
453
455
|
callback(:before_add, record)
|
454
456
|
end || return unless skip_callbacks
|
@@ -459,6 +461,12 @@ module ActiveRecord
|
|
459
461
|
|
460
462
|
yield(record) if block_given?
|
461
463
|
|
464
|
+
if !index && @replaced_or_added_targets.include?(record)
|
465
|
+
index = @target.index(record)
|
466
|
+
end
|
467
|
+
|
468
|
+
@replaced_or_added_targets << record if inversing || index || record.new_record?
|
469
|
+
|
462
470
|
if index
|
463
471
|
target[index] = record
|
464
472
|
elsif @_was_loaded || !loaded?
|
@@ -129,9 +129,7 @@ module ActiveRecord
|
|
129
129
|
end
|
130
130
|
|
131
131
|
def reflection_scope
|
132
|
-
@reflection_scope ||=
|
133
|
-
reflection.join_scopes(klass.arel_table, klass.predicate_builder, klass).inject(&:merge!) || klass.unscoped
|
134
|
-
end
|
132
|
+
@reflection_scope ||= reflection.join_scopes(klass.arel_table, klass.predicate_builder, klass).inject(klass.unscoped, &:merge!)
|
135
133
|
end
|
136
134
|
|
137
135
|
def build_scope
|
@@ -1177,7 +1177,7 @@ module ActiveRecord
|
|
1177
1177
|
return owner_to_pool_manager[owner] if owner_to_pool_manager.key?(owner)
|
1178
1178
|
|
1179
1179
|
if owner == "primary"
|
1180
|
-
ActiveSupport::Deprecation.warn("Using `\"primary\"` as a `connection_specification_name` is deprecated and will be removed in Rails
|
1180
|
+
ActiveSupport::Deprecation.warn("Using `\"primary\"` as a `connection_specification_name` is deprecated and will be removed in Rails 7.0.0. Please use `ActiveRecord::Base`.")
|
1181
1181
|
owner_to_pool_manager[Base.name]
|
1182
1182
|
end
|
1183
1183
|
end
|
@@ -12,7 +12,7 @@ module ActiveRecord
|
|
12
12
|
if value.is_a?(Base)
|
13
13
|
ActiveSupport::Deprecation.warn(<<~MSG)
|
14
14
|
Passing an Active Record object to `quote` directly is deprecated
|
15
|
-
and will be no longer quoted as id value in Rails
|
15
|
+
and will be no longer quoted as id value in Rails 7.0.
|
16
16
|
MSG
|
17
17
|
value = value.id_for_database
|
18
18
|
end
|
@@ -27,14 +27,14 @@ module ActiveRecord
|
|
27
27
|
if value.is_a?(Base)
|
28
28
|
ActiveSupport::Deprecation.warn(<<~MSG)
|
29
29
|
Passing an Active Record object to `type_cast` directly is deprecated
|
30
|
-
and will be no longer type casted as id value in Rails
|
30
|
+
and will be no longer type casted as id value in Rails 7.0.
|
31
31
|
MSG
|
32
32
|
value = value.id_for_database
|
33
33
|
end
|
34
34
|
|
35
35
|
if column
|
36
36
|
ActiveSupport::Deprecation.warn(<<~MSG)
|
37
|
-
Passing a column to `type_cast` is deprecated and will be removed in Rails
|
37
|
+
Passing a column to `type_cast` is deprecated and will be removed in Rails 7.0.
|
38
38
|
MSG
|
39
39
|
type = lookup_cast_type_from_column(column)
|
40
40
|
value = type.serialize(value)
|
@@ -198,6 +198,10 @@ module ActiveRecord
|
|
198
198
|
|
199
199
|
def index_options(table_name)
|
200
200
|
index_options = as_options(index)
|
201
|
+
|
202
|
+
# legacy reference index names are used on versions 6.0 and earlier
|
203
|
+
return index_options if options[:_uses_legacy_reference_index_name]
|
204
|
+
|
201
205
|
index_options[:name] ||= polymorphic_index_name(table_name) if polymorphic
|
202
206
|
index_options
|
203
207
|
end
|
@@ -167,6 +167,9 @@ module ActiveRecord
|
|
167
167
|
elsif type_metadata.extra == "DEFAULT_GENERATED"
|
168
168
|
default = +"(#{default})" unless default.start_with?("(")
|
169
169
|
default, default_function = nil, default
|
170
|
+
elsif type_metadata.type == :text && default
|
171
|
+
# strip and unescape quotes
|
172
|
+
default = default[1...-1].gsub("\\'", "'")
|
170
173
|
end
|
171
174
|
|
172
175
|
MySQL::Column.new(
|
@@ -203,7 +206,7 @@ module ActiveRecord
|
|
203
206
|
def data_source_sql(name = nil, type: nil)
|
204
207
|
scope = quoted_scope(name, type: type)
|
205
208
|
|
206
|
-
sql = +"SELECT table_name FROM (SELECT
|
209
|
+
sql = +"SELECT table_name FROM (SELECT table_name, table_type FROM information_schema.tables "
|
207
210
|
sql << " WHERE table_schema = #{scope[:schema]}) _subquery"
|
208
211
|
if scope[:type] || scope[:name]
|
209
212
|
conditions = []
|
@@ -198,16 +198,40 @@ module ActiveRecord
|
|
198
198
|
@indexes = deep_deduplicate(@indexes)
|
199
199
|
end
|
200
200
|
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
201
|
+
if RUBY_VERSION < "2.7"
|
202
|
+
def deep_deduplicate(value)
|
203
|
+
case value
|
204
|
+
when Hash
|
205
|
+
value.transform_keys { |k| deep_deduplicate(k) }.transform_values { |v| deep_deduplicate(v) }
|
206
|
+
when Array
|
207
|
+
value.map { |i| deep_deduplicate(i) }
|
208
|
+
when String
|
209
|
+
if value.tainted?
|
210
|
+
# Ruby 2.6 and 2.7 have slightly different implementations of the String#-@ method.
|
211
|
+
# In Ruby 2.6, the receiver of the String#-@ method is modified under certain
|
212
|
+
# circumstances, and this was later identified as a bug
|
213
|
+
# (https://bugs.ruby-lang.org/issues/15926) and only fixed in Ruby 2.7.
|
214
|
+
value = value.dup
|
215
|
+
end
|
216
|
+
-value
|
217
|
+
when Deduplicable
|
218
|
+
-value
|
219
|
+
else
|
220
|
+
value
|
221
|
+
end
|
222
|
+
end
|
223
|
+
else
|
224
|
+
def deep_deduplicate(value)
|
225
|
+
case value
|
226
|
+
when Hash
|
227
|
+
value.transform_keys { |k| deep_deduplicate(k) }.transform_values { |v| deep_deduplicate(v) }
|
228
|
+
when Array
|
229
|
+
value.map { |i| deep_deduplicate(i) }
|
230
|
+
when String, Deduplicable
|
231
|
+
-value
|
232
|
+
else
|
233
|
+
value
|
234
|
+
end
|
211
235
|
end
|
212
236
|
end
|
213
237
|
|
@@ -135,7 +135,7 @@ module ActiveRecord
|
|
135
135
|
# Dog.first # finds first Dog record stored on the shard one replica
|
136
136
|
# end
|
137
137
|
#
|
138
|
-
# The database kwarg is deprecated and will be removed in
|
138
|
+
# The database kwarg is deprecated and will be removed in Rails 7.0.0 without replacement.
|
139
139
|
def connected_to(database: nil, role: nil, shard: nil, prevent_writes: false, &blk)
|
140
140
|
if legacy_connection_handling
|
141
141
|
if self != Base
|
@@ -154,7 +154,7 @@ module ActiveRecord
|
|
154
154
|
if database && (role || shard)
|
155
155
|
raise ArgumentError, "`connected_to` cannot accept a `database` argument with any other arguments."
|
156
156
|
elsif database
|
157
|
-
ActiveSupport::Deprecation.warn("The database key in `connected_to` is deprecated. It will be removed in Rails
|
157
|
+
ActiveSupport::Deprecation.warn("The database key in `connected_to` is deprecated. It will be removed in Rails 7.0.0 without replacement.")
|
158
158
|
|
159
159
|
if database.is_a?(Hash)
|
160
160
|
role, database = database.first
|
data/lib/active_record/core.rb
CHANGED
@@ -278,11 +278,11 @@ module ActiveRecord
|
|
278
278
|
end
|
279
279
|
|
280
280
|
def self.allow_unsafe_raw_sql # :nodoc:
|
281
|
-
ActiveSupport::Deprecation.warn("ActiveRecord::Base.allow_unsafe_raw_sql is deprecated and will be removed in Rails
|
281
|
+
ActiveSupport::Deprecation.warn("ActiveRecord::Base.allow_unsafe_raw_sql is deprecated and will be removed in Rails 7.0")
|
282
282
|
end
|
283
283
|
|
284
284
|
def self.allow_unsafe_raw_sql=(value) # :nodoc:
|
285
|
-
ActiveSupport::Deprecation.warn("ActiveRecord::Base.allow_unsafe_raw_sql= is deprecated and will be removed in Rails
|
285
|
+
ActiveSupport::Deprecation.warn("ActiveRecord::Base.allow_unsafe_raw_sql= is deprecated and will be removed in Rails 7.0")
|
286
286
|
end
|
287
287
|
|
288
288
|
self.default_connection_handler = ConnectionAdapters::ConnectionHandler.new
|
@@ -32,7 +32,7 @@ module ActiveRecord
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def config
|
35
|
-
ActiveSupport::Deprecation.warn("DatabaseConfig#config will be removed in
|
35
|
+
ActiveSupport::Deprecation.warn("DatabaseConfig#config will be removed in 7.0.0 in favor of DatabaseConfig#configuration_hash which returns a hash with symbol keys")
|
36
36
|
configuration_hash.stringify_keys
|
37
37
|
end
|
38
38
|
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "uri"
|
3
4
|
require "active_record/database_configurations/database_config"
|
4
5
|
require "active_record/database_configurations/hash_config"
|
5
6
|
require "active_record/database_configurations/url_config"
|
@@ -40,7 +41,7 @@ module ActiveRecord
|
|
40
41
|
def configs_for(env_name: nil, spec_name: nil, name: nil, include_replicas: false)
|
41
42
|
if spec_name
|
42
43
|
name = spec_name
|
43
|
-
ActiveSupport::Deprecation.warn("The kwarg `spec_name` is deprecated in favor of `name`. `spec_name` will be removed in Rails
|
44
|
+
ActiveSupport::Deprecation.warn("The kwarg `spec_name` is deprecated in favor of `name`. `spec_name` will be removed in Rails 7.0")
|
44
45
|
end
|
45
46
|
|
46
47
|
env_name ||= default_env if name
|
@@ -10,6 +10,8 @@ module ActiveRecord
|
|
10
10
|
# This is enabled by default. To disable this functionality set
|
11
11
|
# `use_metadata_table` to false in your database configuration.
|
12
12
|
class InternalMetadata < ActiveRecord::Base # :nodoc:
|
13
|
+
self.record_timestamps = true
|
14
|
+
|
13
15
|
class << self
|
14
16
|
def enabled?
|
15
17
|
ActiveRecord::Base.connection.use_metadata_table?
|
@@ -10,7 +10,7 @@ module ActiveRecord
|
|
10
10
|
else
|
11
11
|
ActiveSupport::Deprecation.warn(<<-MSG.squish)
|
12
12
|
YAML loading from legacy format older than Rails 5.0 is deprecated
|
13
|
-
and will be removed in Rails
|
13
|
+
and will be removed in Rails 7.0.
|
14
14
|
MSG
|
15
15
|
if coder["attributes"].is_a?(ActiveModel::AttributeSet)
|
16
16
|
Rails420.convert(klass, coder)
|
@@ -24,9 +24,8 @@ module ActiveRecord
|
|
24
24
|
|
25
25
|
module TableDefinition
|
26
26
|
def references(*args, **options)
|
27
|
-
|
28
|
-
|
29
|
-
end
|
27
|
+
options[:_uses_legacy_reference_index_name] = true
|
28
|
+
super
|
30
29
|
end
|
31
30
|
alias :belongs_to :references
|
32
31
|
end
|
@@ -56,8 +55,12 @@ module ActiveRecord
|
|
56
55
|
end
|
57
56
|
|
58
57
|
def add_reference(table_name, ref_name, **options)
|
59
|
-
|
60
|
-
|
58
|
+
if connection.adapter_name == "SQLite"
|
59
|
+
options[:type] = :integer
|
60
|
+
end
|
61
|
+
|
62
|
+
options[:_uses_legacy_reference_index_name] = true
|
63
|
+
super
|
61
64
|
end
|
62
65
|
alias :add_belongs_to :add_reference
|
63
66
|
|
@@ -126,7 +129,7 @@ module ActiveRecord
|
|
126
129
|
class << t
|
127
130
|
prepend TableDefinition
|
128
131
|
end
|
129
|
-
|
132
|
+
super
|
130
133
|
end
|
131
134
|
|
132
135
|
def command_recorder
|
@@ -630,7 +630,7 @@ module ActiveRecord
|
|
630
630
|
if column.sql_type.start_with?("interval")
|
631
631
|
precision_arguments = column.precision.presence && ", precision: #{column.precision}"
|
632
632
|
ActiveSupport::Deprecation.warn(<<~WARNING)
|
633
|
-
The behavior of the `:interval` type will be changing in Rails
|
633
|
+
The behavior of the `:interval` type will be changing in Rails 7.0
|
634
634
|
to return an `ActiveSupport::Duration` object. If you'd like to keep
|
635
635
|
the old behavior, you can add this line to #{self.name} model:
|
636
636
|
|
@@ -464,7 +464,7 @@ db_namespace = namespace :db do
|
|
464
464
|
|
465
465
|
task load_if_ruby: ["db:create", :environment] do
|
466
466
|
ActiveSupport::Deprecation.warn(<<-MSG.squish)
|
467
|
-
Using `bin/rails db:schema:load_if_ruby` is deprecated and will be removed in Rails
|
467
|
+
Using `bin/rails db:schema:load_if_ruby` is deprecated and will be removed in Rails 7.0.
|
468
468
|
Configure the format using `config.active_record.schema_format = :ruby` to use `schema.rb` and run `bin/rails db:schema:load` instead.
|
469
469
|
MSG
|
470
470
|
db_namespace["schema:load"].invoke if ActiveRecord::Base.schema_format == :ruby
|
@@ -527,7 +527,7 @@ db_namespace = namespace :db do
|
|
527
527
|
desc "Dumps the database structure to db/structure.sql. Specify another file with SCHEMA=db/my_structure.sql"
|
528
528
|
task dump: :load_config do
|
529
529
|
ActiveSupport::Deprecation.warn(<<-MSG.squish)
|
530
|
-
Using `bin/rails db:structure:dump` is deprecated and will be removed in Rails
|
530
|
+
Using `bin/rails db:structure:dump` is deprecated and will be removed in Rails 7.0.
|
531
531
|
Configure the format using `config.active_record.schema_format = :sql` to use `structure.sql` and run `bin/rails db:schema:dump` instead.
|
532
532
|
MSG
|
533
533
|
|
@@ -538,7 +538,7 @@ db_namespace = namespace :db do
|
|
538
538
|
desc "Recreates the databases from the structure.sql file"
|
539
539
|
task load: [:load_config, :check_protected_environments] do
|
540
540
|
ActiveSupport::Deprecation.warn(<<-MSG.squish)
|
541
|
-
Using `bin/rails db:structure:load` is deprecated and will be removed in Rails
|
541
|
+
Using `bin/rails db:structure:load` is deprecated and will be removed in Rails 7.0.
|
542
542
|
Configure the format using `config.active_record.schema_format = :sql` to use `structure.sql` and run `bin/rails db:schema:load` instead.
|
543
543
|
MSG
|
544
544
|
db_namespace["schema:load"].invoke
|
@@ -546,7 +546,7 @@ db_namespace = namespace :db do
|
|
546
546
|
|
547
547
|
task load_if_sql: ["db:create", :environment] do
|
548
548
|
ActiveSupport::Deprecation.warn(<<-MSG.squish)
|
549
|
-
Using `bin/rails db:structure:load_if_sql` is deprecated and will be removed in Rails
|
549
|
+
Using `bin/rails db:structure:load_if_sql` is deprecated and will be removed in Rails 7.0.
|
550
550
|
Configure the format using `config.active_record.schema_format = :sql` to use `structure.sql` and run `bin/rails db:schema:load` instead.
|
551
551
|
MSG
|
552
552
|
db_namespace["schema:load"].invoke if ActiveRecord::Base.schema_format == :sql
|
@@ -557,7 +557,7 @@ db_namespace = namespace :db do
|
|
557
557
|
desc "Dumps the #{name} database structure to db/structure.sql. Specify another file with SCHEMA=db/my_structure.sql"
|
558
558
|
task name => :load_config do
|
559
559
|
ActiveSupport::Deprecation.warn(<<-MSG.squish)
|
560
|
-
Using `bin/rails db:structure:dump:#{name}` is deprecated and will be removed in Rails
|
560
|
+
Using `bin/rails db:structure:dump:#{name}` is deprecated and will be removed in Rails 7.0.
|
561
561
|
Configure the format using `config.active_record.schema_format = :sql` to use `structure.sql` and run `bin/rails db:schema:dump:#{name}` instead.
|
562
562
|
MSG
|
563
563
|
db_namespace["schema:dump:#{name}"].invoke
|
@@ -571,7 +571,7 @@ db_namespace = namespace :db do
|
|
571
571
|
desc "Recreates the #{name} database from the structure.sql file"
|
572
572
|
task name => :load_config do
|
573
573
|
ActiveSupport::Deprecation.warn(<<-MSG.squish)
|
574
|
-
Using `bin/rails db:structure:load:#{name}` is deprecated and will be removed in Rails
|
574
|
+
Using `bin/rails db:structure:load:#{name}` is deprecated and will be removed in Rails 7.0.
|
575
575
|
Configure the format using `config.active_record.schema_format = :sql` to use `structure.sql` and run `bin/rails db:schema:load:#{name}` instead.
|
576
576
|
MSG
|
577
577
|
db_namespace["schema:load:#{name}"].invoke
|
@@ -603,7 +603,7 @@ db_namespace = namespace :db do
|
|
603
603
|
# desc "Recreate the test database from an existent structure.sql file"
|
604
604
|
task load_structure: %w(db:test:purge) do
|
605
605
|
ActiveSupport::Deprecation.warn(<<-MSG.squish)
|
606
|
-
Using `bin/rails db:test:load_structure` is deprecated and will be removed in Rails
|
606
|
+
Using `bin/rails db:test:load_structure` is deprecated and will be removed in Rails 7.0.
|
607
607
|
Configure the format using `config.active_record.schema_format = :sql` to use `structure.sql` and run `bin/rails db:test:load_schema` instead.
|
608
608
|
MSG
|
609
609
|
db_namespace["test:load_schema"].invoke
|
@@ -650,7 +650,7 @@ db_namespace = namespace :db do
|
|
650
650
|
namespace :load_structure do
|
651
651
|
task name => "db:test:purge:#{name}" do
|
652
652
|
ActiveSupport::Deprecation.warn(<<-MSG.squish)
|
653
|
-
Using `bin/rails db:test:load_structure:#{name}` is deprecated and will be removed in Rails
|
653
|
+
Using `bin/rails db:test:load_structure:#{name}` is deprecated and will be removed in Rails 7.0.
|
654
654
|
Configure the format using `config.active_record.schema_format = :sql` to use `structure.sql` and run `bin/rails db:test:load_structure:#{name}` instead.
|
655
655
|
MSG
|
656
656
|
db_namespace["test:load_schema:#{name}"].invoke
|
@@ -321,8 +321,8 @@ module ActiveRecord
|
|
321
321
|
|
322
322
|
unless group_fields == group_values
|
323
323
|
ActiveSupport::Deprecation.warn(<<-MSG.squish)
|
324
|
-
`#{operation}` with group by duplicated fields does no longer affect to result in Rails
|
325
|
-
To migrate to Rails
|
324
|
+
`#{operation}` with group by duplicated fields does no longer affect to result in Rails 7.0.
|
325
|
+
To migrate to Rails 7.0's behavior, use `uniq!(:group)` to deduplicate group fields
|
326
326
|
(`#{klass.name&.tableize || klass.table_name}.uniq!(:group).#{operation}(#{column_name.inspect})`).
|
327
327
|
MSG
|
328
328
|
group_fields = group_values
|
@@ -369,7 +369,7 @@ module ActiveRecord
|
|
369
369
|
blank_value = order_values.first
|
370
370
|
ActiveSupport::Deprecation.warn(<<~MSG.squish)
|
371
371
|
`.reorder(#{blank_value.inspect})` with `.first` / `.first!` no longer
|
372
|
-
takes non-deterministic result in Rails
|
372
|
+
takes non-deterministic result in Rails 7.0.
|
373
373
|
To continue taking non-deterministic result, use `.take` / `.take!` instead.
|
374
374
|
MSG
|
375
375
|
end
|
@@ -1157,8 +1157,8 @@ module ActiveRecord
|
|
1157
1157
|
annotates = annotates.uniq if annotates.size > 1
|
1158
1158
|
unless annotates == annotate_values
|
1159
1159
|
ActiveSupport::Deprecation.warn(<<-MSG.squish)
|
1160
|
-
Duplicated query annotations are no longer shown in queries in Rails
|
1161
|
-
To migrate to Rails
|
1160
|
+
Duplicated query annotations are no longer shown in queries in Rails 7.0.
|
1161
|
+
To migrate to Rails 7.0's behavior, use `uniq!(:annotate)` to deduplicate query annotations
|
1162
1162
|
(`#{klass.name&.tableize || klass.table_name}.uniq!(:annotate)`).
|
1163
1163
|
MSG
|
1164
1164
|
annotates = annotate_values
|
@@ -168,8 +168,8 @@ module ActiveRecord
|
|
168
168
|
else
|
169
169
|
ActiveSupport::Deprecation.warn(<<-MSG.squish)
|
170
170
|
Merging (#{node.to_sql}) and (#{ref.to_sql}) no longer maintain
|
171
|
-
both conditions, and will be replaced by the latter in Rails
|
172
|
-
To migrate to Rails
|
171
|
+
both conditions, and will be replaced by the latter in Rails 7.0.
|
172
|
+
To migrate to Rails 7.0's behavior, use `relation.merge(other, rewhere: true)`.
|
173
173
|
MSG
|
174
174
|
false
|
175
175
|
end
|
@@ -340,7 +340,7 @@ module ActiveRecord
|
|
340
340
|
db_config = resolve_configuration(configuration)
|
341
341
|
|
342
342
|
if environment || name
|
343
|
-
ActiveSupport::Deprecation.warn("`environment` and `name` will be removed as parameters in
|
343
|
+
ActiveSupport::Deprecation.warn("`environment` and `name` will be removed as parameters in 7.0.0, you may now pass an ActiveRecord::DatabaseConfigurations::DatabaseConfig as `configuration` instead.")
|
344
344
|
end
|
345
345
|
|
346
346
|
name ||= db_config.name
|
data/lib/active_record.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
#--
|
4
|
-
# Copyright (c) 2004-
|
4
|
+
# Copyright (c) 2004-2022 David Heinemeier Hansson
|
5
5
|
#
|
6
6
|
# Permission is hereby granted, free of charge, to any person obtaining
|
7
7
|
# a copy of this software and associated documentation files (the
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 6.1.
|
4
|
+
version: 6.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-05-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 6.1.
|
19
|
+
version: 6.1.6
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 6.1.
|
26
|
+
version: 6.1.6
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activemodel
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 6.1.
|
33
|
+
version: 6.1.6
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 6.1.
|
40
|
+
version: 6.1.6
|
41
41
|
description: Databases on Rails. Build a persistent domain model by mapping database
|
42
42
|
tables to Ruby classes. Strong conventions for associations, validations, aggregations,
|
43
43
|
migrations, and testing come baked-in.
|
@@ -390,10 +390,11 @@ licenses:
|
|
390
390
|
- MIT
|
391
391
|
metadata:
|
392
392
|
bug_tracker_uri: https://github.com/rails/rails/issues
|
393
|
-
changelog_uri: https://github.com/rails/rails/blob/v6.1.
|
394
|
-
documentation_uri: https://api.rubyonrails.org/v6.1.
|
393
|
+
changelog_uri: https://github.com/rails/rails/blob/v6.1.6/activerecord/CHANGELOG.md
|
394
|
+
documentation_uri: https://api.rubyonrails.org/v6.1.6/
|
395
395
|
mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
|
396
|
-
source_code_uri: https://github.com/rails/rails/tree/v6.1.
|
396
|
+
source_code_uri: https://github.com/rails/rails/tree/v6.1.6/activerecord
|
397
|
+
rubygems_mfa_required: 'true'
|
397
398
|
post_install_message:
|
398
399
|
rdoc_options:
|
399
400
|
- "--main"
|
@@ -411,7 +412,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
411
412
|
- !ruby/object:Gem::Version
|
412
413
|
version: '0'
|
413
414
|
requirements: []
|
414
|
-
rubygems_version: 3.
|
415
|
+
rubygems_version: 3.3.7
|
415
416
|
signing_key:
|
416
417
|
specification_version: 4
|
417
418
|
summary: Object-relational mapper framework (part of Rails).
|