activerecord 7.1.1 → 7.1.5
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.
Potentially problematic release.
This version of activerecord might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CHANGELOG.md +496 -0
- data/README.rdoc +1 -0
- data/lib/active_record/associations/association.rb +2 -1
- data/lib/active_record/associations/belongs_to_association.rb +4 -4
- data/lib/active_record/associations/collection_association.rb +4 -4
- data/lib/active_record/associations/has_many_association.rb +2 -2
- data/lib/active_record/associations/has_one_association.rb +2 -2
- data/lib/active_record/associations/join_dependency/join_association.rb +3 -2
- data/lib/active_record/associations/join_dependency.rb +10 -12
- data/lib/active_record/associations/preloader/association.rb +4 -1
- data/lib/active_record/associations.rb +21 -15
- data/lib/active_record/attribute_methods/before_type_cast.rb +1 -1
- data/lib/active_record/attribute_methods/dirty.rb +15 -11
- data/lib/active_record/attribute_methods/read.rb +3 -3
- data/lib/active_record/attribute_methods/time_zone_conversion.rb +4 -0
- data/lib/active_record/attribute_methods/write.rb +3 -3
- data/lib/active_record/attribute_methods.rb +47 -7
- data/lib/active_record/autosave_association.rb +5 -2
- data/lib/active_record/callbacks.rb +2 -2
- data/lib/active_record/connection_adapters/abstract/connection_pool.rb +19 -9
- data/lib/active_record/connection_adapters/abstract/database_statements.rb +5 -3
- data/lib/active_record/connection_adapters/abstract/query_cache.rb +2 -1
- data/lib/active_record/connection_adapters/abstract/schema_statements.rb +8 -4
- data/lib/active_record/connection_adapters/abstract_adapter.rb +27 -19
- data/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +37 -13
- data/lib/active_record/connection_adapters/mysql/schema_statements.rb +2 -1
- data/lib/active_record/connection_adapters/mysql2/database_statements.rb +3 -0
- data/lib/active_record/connection_adapters/mysql2_adapter.rb +16 -10
- data/lib/active_record/connection_adapters/postgresql/database_statements.rb +4 -1
- data/lib/active_record/connection_adapters/postgresql/oid/cidr.rb +6 -0
- data/lib/active_record/connection_adapters/postgresql/oid/money.rb +3 -2
- data/lib/active_record/connection_adapters/postgresql/schema_statements.rb +15 -6
- data/lib/active_record/connection_adapters/postgresql_adapter.rb +32 -33
- data/lib/active_record/connection_adapters/sqlite3/database_statements.rb +10 -3
- data/lib/active_record/connection_adapters/sqlite3_adapter.rb +2 -2
- data/lib/active_record/connection_adapters/trilogy/database_statements.rb +1 -0
- data/lib/active_record/connection_adapters/trilogy_adapter.rb +25 -21
- data/lib/active_record/connection_handling.rb +1 -1
- data/lib/active_record/core.rb +49 -10
- data/lib/active_record/counter_cache.rb +7 -3
- data/lib/active_record/database_configurations/connection_url_resolver.rb +1 -1
- data/lib/active_record/database_configurations/hash_config.rb +6 -2
- data/lib/active_record/delegated_type.rb +7 -7
- data/lib/active_record/destroy_association_async_job.rb +1 -1
- data/lib/active_record/encryption/encryptable_record.rb +7 -1
- data/lib/active_record/encryption/encrypted_attribute_type.rb +6 -2
- data/lib/active_record/encryption/extended_deterministic_queries.rb +0 -15
- data/lib/active_record/encryption/scheme.rb +8 -4
- data/lib/active_record/encryption.rb +2 -0
- data/lib/active_record/enum.rb +6 -9
- data/lib/active_record/errors.rb +5 -4
- data/lib/active_record/fixtures.rb +16 -0
- data/lib/active_record/future_result.rb +10 -0
- data/lib/active_record/gem_version.rb +1 -1
- data/lib/active_record/insert_all.rb +3 -3
- data/lib/active_record/internal_metadata.rb +1 -1
- data/lib/active_record/locking/optimistic.rb +1 -1
- data/lib/active_record/marshalling.rb +4 -1
- data/lib/active_record/message_pack.rb +1 -1
- data/lib/active_record/middleware/database_selector.rb +1 -1
- data/lib/active_record/migration/compatibility.rb +14 -0
- data/lib/active_record/migration/pending_migration_connection.rb +21 -0
- data/lib/active_record/migration.rb +9 -5
- data/lib/active_record/model_schema.rb +12 -7
- data/lib/active_record/nested_attributes.rb +16 -5
- data/lib/active_record/normalization.rb +8 -0
- data/lib/active_record/persistence.rb +6 -5
- data/lib/active_record/promise.rb +1 -1
- data/lib/active_record/query_cache.rb +1 -1
- data/lib/active_record/query_logs_formatter.rb +1 -1
- data/lib/active_record/railtie.rb +14 -14
- data/lib/active_record/railties/controller_runtime.rb +2 -1
- data/lib/active_record/railties/databases.rake +7 -7
- data/lib/active_record/reflection.rb +21 -3
- data/lib/active_record/relation/calculations.rb +28 -1
- data/lib/active_record/relation/delegation.rb +1 -1
- data/lib/active_record/relation/predicate_builder/polymorphic_array_value.rb +6 -1
- data/lib/active_record/relation/query_methods.rb +21 -7
- data/lib/active_record/relation.rb +30 -5
- data/lib/active_record/result.rb +1 -1
- data/lib/active_record/runtime_registry.rb +15 -1
- data/lib/active_record/schema_migration.rb +1 -1
- data/lib/active_record/secure_token.rb +1 -1
- data/lib/active_record/tasks/database_tasks.rb +35 -13
- data/lib/active_record/test_fixtures.rb +1 -0
- data/lib/active_record/timestamp.rb +3 -1
- data/lib/active_record.rb +2 -2
- data/lib/arel/nodes/homogeneous_in.rb +1 -1
- data/lib/arel/tree_manager.rb +5 -1
- data/lib/arel/visitors/to_sql.rb +2 -1
- metadata +14 -13
|
@@ -125,11 +125,11 @@ module ActiveRecord
|
|
|
125
125
|
end
|
|
126
126
|
|
|
127
127
|
def create_all
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
128
|
+
each_local_configuration do |db_config|
|
|
129
|
+
with_temporary_connection(db_config) do
|
|
130
|
+
create(db_config)
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
133
|
end
|
|
134
134
|
|
|
135
135
|
def setup_initial_database_yaml # :nodoc:
|
|
@@ -175,6 +175,7 @@ module ActiveRecord
|
|
|
175
175
|
|
|
176
176
|
def prepare_all
|
|
177
177
|
seed = false
|
|
178
|
+
dump_db_configs = []
|
|
178
179
|
|
|
179
180
|
each_current_configuration(env) do |db_config|
|
|
180
181
|
with_temporary_pool(db_config) do
|
|
@@ -192,9 +193,27 @@ module ActiveRecord
|
|
|
192
193
|
|
|
193
194
|
seed = true
|
|
194
195
|
end
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
each_current_environment(env) do |environment|
|
|
200
|
+
db_configs_with_versions(environment).sort.each do |version, db_configs|
|
|
201
|
+
dump_db_configs |= db_configs
|
|
195
202
|
|
|
196
|
-
|
|
197
|
-
|
|
203
|
+
db_configs.each do |db_config|
|
|
204
|
+
with_temporary_pool(db_config) do
|
|
205
|
+
migrate(version)
|
|
206
|
+
end
|
|
207
|
+
end
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
# Dump schema for databases that were migrated.
|
|
212
|
+
if ActiveRecord.dump_schema_after_migration
|
|
213
|
+
dump_db_configs.each do |db_config|
|
|
214
|
+
with_temporary_pool(db_config) do
|
|
215
|
+
dump_schema(db_config)
|
|
216
|
+
end
|
|
198
217
|
end
|
|
199
218
|
end
|
|
200
219
|
|
|
@@ -255,10 +274,10 @@ module ActiveRecord
|
|
|
255
274
|
Migration.verbose = verbose_was
|
|
256
275
|
end
|
|
257
276
|
|
|
258
|
-
def db_configs_with_versions(
|
|
277
|
+
def db_configs_with_versions(environment = env) # :nodoc:
|
|
259
278
|
db_configs_with_versions = Hash.new { |h, k| h[k] = [] }
|
|
260
279
|
|
|
261
|
-
with_temporary_connection_for_each do |conn|
|
|
280
|
+
with_temporary_connection_for_each(env: environment) do |conn|
|
|
262
281
|
db_config = conn.pool.db_config
|
|
263
282
|
versions_to_run = conn.migration_context.pending_migration_versions
|
|
264
283
|
target_version = ActiveRecord::Tasks::DatabaseTasks.target_version
|
|
@@ -552,10 +571,7 @@ module ActiveRecord
|
|
|
552
571
|
end
|
|
553
572
|
|
|
554
573
|
def each_current_configuration(environment, name = nil)
|
|
555
|
-
|
|
556
|
-
environments << "test" if environment == "development" && !ENV["SKIP_TEST_DATABASE"] && !ENV["DATABASE_URL"]
|
|
557
|
-
|
|
558
|
-
environments.each do |env|
|
|
574
|
+
each_current_environment(environment) do |env|
|
|
559
575
|
configs_for(env_name: env).each do |db_config|
|
|
560
576
|
next if name && name != db_config.name
|
|
561
577
|
|
|
@@ -564,6 +580,12 @@ module ActiveRecord
|
|
|
564
580
|
end
|
|
565
581
|
end
|
|
566
582
|
|
|
583
|
+
def each_current_environment(environment, &block)
|
|
584
|
+
environments = [environment]
|
|
585
|
+
environments << "test" if environment == "development" && !ENV["SKIP_TEST_DATABASE"] && !ENV["DATABASE_URL"]
|
|
586
|
+
environments.each(&block)
|
|
587
|
+
end
|
|
588
|
+
|
|
567
589
|
def each_local_configuration
|
|
568
590
|
configs_for.each do |db_config|
|
|
569
591
|
next unless db_config.database
|
|
@@ -54,8 +54,10 @@ module ActiveRecord
|
|
|
54
54
|
|
|
55
55
|
module ClassMethods # :nodoc:
|
|
56
56
|
def touch_attributes_with_time(*names, time: nil)
|
|
57
|
+
names = names.map(&:to_s)
|
|
58
|
+
names = names.map { |name| attribute_aliases[name] || name }
|
|
57
59
|
attribute_names = timestamp_attributes_for_update_in_model
|
|
58
|
-
attribute_names |= names
|
|
60
|
+
attribute_names |= names
|
|
59
61
|
attribute_names.index_with(time || current_time_from_proper_timezone)
|
|
60
62
|
end
|
|
61
63
|
|
data/lib/active_record.rb
CHANGED
|
@@ -34,7 +34,7 @@ require "active_record/deprecator"
|
|
|
34
34
|
require "active_model/attribute_set"
|
|
35
35
|
require "active_record/errors"
|
|
36
36
|
|
|
37
|
-
# :include:
|
|
37
|
+
# :include: ../README.rdoc
|
|
38
38
|
module ActiveRecord
|
|
39
39
|
extend ActiveSupport::Autoload
|
|
40
40
|
|
|
@@ -277,7 +277,7 @@ module ActiveRecord
|
|
|
277
277
|
# with the global thread pool async query executor.
|
|
278
278
|
def self.global_executor_concurrency=(global_executor_concurrency)
|
|
279
279
|
if self.async_query_executor.nil? || self.async_query_executor == :multi_thread_pool
|
|
280
|
-
raise ArgumentError, "`global_executor_concurrency` cannot be set when
|
|
280
|
+
raise ArgumentError, "`global_executor_concurrency` cannot be set when the executor is nil or set to `:multi_thread_pool`. For multiple thread pools, please set the concurrency in your database configuration."
|
|
281
281
|
end
|
|
282
282
|
|
|
283
283
|
@global_executor_concurrency = global_executor_concurrency
|
|
@@ -48,7 +48,7 @@ module Arel # :nodoc: all
|
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
def proc_for_binds
|
|
51
|
-
-> value { ActiveModel::Attribute.with_cast_value(attribute.name, value,
|
|
51
|
+
-> value { ActiveModel::Attribute.with_cast_value(attribute.name, value, ActiveModel::Type.default_value) }
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
def fetch_attribute(&block)
|
data/lib/arel/tree_manager.rb
CHANGED
data/lib/arel/visitors/to_sql.rb
CHANGED
|
@@ -930,7 +930,8 @@ module Arel # :nodoc: all
|
|
|
930
930
|
stmt.limit = nil
|
|
931
931
|
stmt.offset = nil
|
|
932
932
|
stmt.orders = []
|
|
933
|
-
|
|
933
|
+
columns = Arel::Nodes::Grouping.new(o.key)
|
|
934
|
+
stmt.wheres = [Nodes::In.new(columns, [build_subselect(o.key, o)])]
|
|
934
935
|
stmt.relation = o.relation.left if has_join_sources?(o)
|
|
935
936
|
stmt.groups = o.groups unless o.groups.empty?
|
|
936
937
|
stmt.havings = o.havings unless o.havings.empty?
|
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: 7.1.
|
|
4
|
+
version: 7.1.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- David Heinemeier Hansson
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2024-10-31 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: 7.1.
|
|
19
|
+
version: 7.1.5
|
|
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: 7.1.
|
|
26
|
+
version: 7.1.5
|
|
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: 7.1.
|
|
33
|
+
version: 7.1.5
|
|
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: 7.1.
|
|
40
|
+
version: 7.1.5
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: timeout
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -279,6 +279,7 @@ files:
|
|
|
279
279
|
- lib/active_record/migration/default_strategy.rb
|
|
280
280
|
- lib/active_record/migration/execution_strategy.rb
|
|
281
281
|
- lib/active_record/migration/join_table.rb
|
|
282
|
+
- lib/active_record/migration/pending_migration_connection.rb
|
|
282
283
|
- lib/active_record/model_schema.rb
|
|
283
284
|
- lib/active_record/nested_attributes.rb
|
|
284
285
|
- lib/active_record/no_touching.rb
|
|
@@ -469,12 +470,12 @@ licenses:
|
|
|
469
470
|
- MIT
|
|
470
471
|
metadata:
|
|
471
472
|
bug_tracker_uri: https://github.com/rails/rails/issues
|
|
472
|
-
changelog_uri: https://github.com/rails/rails/blob/v7.1.
|
|
473
|
-
documentation_uri: https://api.rubyonrails.org/v7.1.
|
|
473
|
+
changelog_uri: https://github.com/rails/rails/blob/v7.1.5/activerecord/CHANGELOG.md
|
|
474
|
+
documentation_uri: https://api.rubyonrails.org/v7.1.5/
|
|
474
475
|
mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
|
|
475
|
-
source_code_uri: https://github.com/rails/rails/tree/v7.1.
|
|
476
|
+
source_code_uri: https://github.com/rails/rails/tree/v7.1.5/activerecord
|
|
476
477
|
rubygems_mfa_required: 'true'
|
|
477
|
-
post_install_message:
|
|
478
|
+
post_install_message:
|
|
478
479
|
rdoc_options:
|
|
479
480
|
- "--main"
|
|
480
481
|
- README.rdoc
|
|
@@ -491,8 +492,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
491
492
|
- !ruby/object:Gem::Version
|
|
492
493
|
version: '0'
|
|
493
494
|
requirements: []
|
|
494
|
-
rubygems_version: 3.
|
|
495
|
-
signing_key:
|
|
495
|
+
rubygems_version: 3.5.16
|
|
496
|
+
signing_key:
|
|
496
497
|
specification_version: 4
|
|
497
498
|
summary: Object-relational mapper framework (part of Rails).
|
|
498
499
|
test_files: []
|