activerecord 6.0.3.2 → 6.1.0
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 +804 -708
- data/MIT-LICENSE +1 -1
- data/README.rdoc +2 -2
- data/lib/active_record.rb +7 -14
- data/lib/active_record/aggregations.rb +1 -1
- data/lib/active_record/association_relation.rb +22 -14
- data/lib/active_record/associations.rb +114 -11
- data/lib/active_record/associations/alias_tracker.rb +19 -15
- data/lib/active_record/associations/association.rb +44 -28
- data/lib/active_record/associations/association_scope.rb +17 -15
- data/lib/active_record/associations/belongs_to_association.rb +15 -5
- data/lib/active_record/associations/belongs_to_polymorphic_association.rb +1 -1
- data/lib/active_record/associations/builder/association.rb +9 -3
- data/lib/active_record/associations/builder/belongs_to.rb +10 -7
- data/lib/active_record/associations/builder/collection_association.rb +5 -4
- data/lib/active_record/associations/builder/has_and_belongs_to_many.rb +0 -1
- data/lib/active_record/associations/builder/has_many.rb +6 -2
- data/lib/active_record/associations/builder/has_one.rb +11 -14
- data/lib/active_record/associations/builder/singular_association.rb +1 -1
- data/lib/active_record/associations/collection_association.rb +19 -6
- data/lib/active_record/associations/collection_proxy.rb +13 -5
- data/lib/active_record/associations/foreign_association.rb +13 -0
- data/lib/active_record/associations/has_many_association.rb +24 -2
- data/lib/active_record/associations/has_many_through_association.rb +10 -4
- data/lib/active_record/associations/has_one_association.rb +15 -1
- data/lib/active_record/associations/join_dependency.rb +72 -50
- data/lib/active_record/associations/join_dependency/join_association.rb +36 -14
- data/lib/active_record/associations/join_dependency/join_part.rb +3 -3
- data/lib/active_record/associations/preloader.rb +11 -5
- data/lib/active_record/associations/preloader/association.rb +51 -25
- data/lib/active_record/associations/preloader/through_association.rb +2 -2
- data/lib/active_record/associations/singular_association.rb +1 -1
- data/lib/active_record/associations/through_association.rb +1 -1
- data/lib/active_record/attribute_assignment.rb +10 -8
- data/lib/active_record/attribute_methods.rb +64 -54
- data/lib/active_record/attribute_methods/before_type_cast.rb +13 -9
- data/lib/active_record/attribute_methods/dirty.rb +1 -11
- data/lib/active_record/attribute_methods/primary_key.rb +6 -2
- data/lib/active_record/attribute_methods/query.rb +3 -6
- data/lib/active_record/attribute_methods/read.rb +8 -11
- data/lib/active_record/attribute_methods/serialization.rb +11 -5
- data/lib/active_record/attribute_methods/time_zone_conversion.rb +12 -13
- data/lib/active_record/attribute_methods/write.rb +12 -20
- data/lib/active_record/attributes.rb +32 -7
- data/lib/active_record/autosave_association.rb +57 -40
- data/lib/active_record/base.rb +2 -14
- data/lib/active_record/callbacks.rb +152 -22
- data/lib/active_record/coders/yaml_column.rb +1 -1
- data/lib/active_record/connection_adapters.rb +50 -0
- data/lib/active_record/connection_adapters/abstract/connection_pool.rb +191 -134
- data/lib/active_record/connection_adapters/abstract/database_limits.rb +2 -44
- data/lib/active_record/connection_adapters/abstract/database_statements.rb +65 -22
- data/lib/active_record/connection_adapters/abstract/query_cache.rb +2 -7
- data/lib/active_record/connection_adapters/abstract/quoting.rb +34 -34
- data/lib/active_record/connection_adapters/abstract/savepoints.rb +3 -3
- data/lib/active_record/connection_adapters/abstract/schema_creation.rb +153 -116
- data/lib/active_record/connection_adapters/abstract/schema_definitions.rb +112 -27
- data/lib/active_record/connection_adapters/abstract/schema_dumper.rb +3 -3
- data/lib/active_record/connection_adapters/abstract/schema_statements.rb +224 -85
- data/lib/active_record/connection_adapters/abstract/transaction.rb +80 -32
- data/lib/active_record/connection_adapters/abstract_adapter.rb +54 -71
- data/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +129 -88
- data/lib/active_record/connection_adapters/column.rb +15 -1
- data/lib/active_record/connection_adapters/deduplicable.rb +29 -0
- data/lib/active_record/connection_adapters/legacy_pool_manager.rb +31 -0
- data/lib/active_record/connection_adapters/mysql/database_statements.rb +23 -25
- data/lib/active_record/connection_adapters/mysql/explain_pretty_printer.rb +1 -1
- data/lib/active_record/connection_adapters/mysql/quoting.rb +1 -1
- data/lib/active_record/connection_adapters/mysql/schema_creation.rb +32 -6
- data/lib/active_record/connection_adapters/mysql/schema_definitions.rb +8 -0
- data/lib/active_record/connection_adapters/mysql/schema_dumper.rb +1 -1
- data/lib/active_record/connection_adapters/mysql/schema_statements.rb +11 -7
- data/lib/active_record/connection_adapters/mysql/type_metadata.rb +10 -1
- data/lib/active_record/connection_adapters/mysql2_adapter.rb +31 -12
- data/lib/active_record/connection_adapters/pool_config.rb +63 -0
- data/lib/active_record/connection_adapters/pool_manager.rb +43 -0
- data/lib/active_record/connection_adapters/postgresql/column.rb +24 -1
- data/lib/active_record/connection_adapters/postgresql/database_statements.rb +13 -54
- data/lib/active_record/connection_adapters/postgresql/oid.rb +2 -0
- data/lib/active_record/connection_adapters/postgresql/oid/cidr.rb +3 -5
- data/lib/active_record/connection_adapters/postgresql/oid/date.rb +2 -2
- data/lib/active_record/connection_adapters/postgresql/oid/date_time.rb +10 -2
- data/lib/active_record/connection_adapters/postgresql/oid/interval.rb +49 -0
- data/lib/active_record/connection_adapters/postgresql/oid/legacy_point.rb +2 -2
- data/lib/active_record/connection_adapters/postgresql/oid/macaddr.rb +25 -0
- data/lib/active_record/connection_adapters/postgresql/oid/point.rb +2 -2
- data/lib/active_record/connection_adapters/postgresql/oid/range.rb +24 -5
- data/lib/active_record/connection_adapters/postgresql/oid/uuid.rb +11 -1
- data/lib/active_record/connection_adapters/postgresql/quoting.rb +4 -4
- data/lib/active_record/connection_adapters/postgresql/referential_integrity.rb +1 -1
- data/lib/active_record/connection_adapters/postgresql/schema_creation.rb +5 -1
- data/lib/active_record/connection_adapters/postgresql/schema_statements.rb +61 -29
- data/lib/active_record/connection_adapters/postgresql/type_metadata.rb +8 -0
- data/lib/active_record/connection_adapters/postgresql_adapter.rb +72 -55
- data/lib/active_record/connection_adapters/schema_cache.rb +98 -15
- data/lib/active_record/connection_adapters/sql_type_metadata.rb +10 -0
- data/lib/active_record/connection_adapters/sqlite3/database_statements.rb +31 -6
- data/lib/active_record/connection_adapters/sqlite3/quoting.rb +1 -1
- data/lib/active_record/connection_adapters/sqlite3/schema_creation.rb +5 -1
- data/lib/active_record/connection_adapters/sqlite3/schema_statements.rb +37 -4
- data/lib/active_record/connection_adapters/sqlite3_adapter.rb +49 -50
- data/lib/active_record/connection_handling.rb +210 -71
- data/lib/active_record/core.rb +229 -63
- data/lib/active_record/database_configurations.rb +124 -85
- data/lib/active_record/database_configurations/connection_url_resolver.rb +98 -0
- data/lib/active_record/database_configurations/database_config.rb +52 -9
- data/lib/active_record/database_configurations/hash_config.rb +54 -8
- data/lib/active_record/database_configurations/url_config.rb +15 -40
- data/lib/active_record/delegated_type.rb +209 -0
- data/lib/active_record/destroy_association_async_job.rb +36 -0
- data/lib/active_record/enum.rb +40 -16
- data/lib/active_record/errors.rb +47 -12
- data/lib/active_record/explain.rb +9 -4
- data/lib/active_record/explain_subscriber.rb +1 -1
- data/lib/active_record/fixture_set/file.rb +10 -17
- data/lib/active_record/fixture_set/model_metadata.rb +1 -2
- data/lib/active_record/fixture_set/render_context.rb +1 -1
- data/lib/active_record/fixture_set/table_row.rb +2 -2
- data/lib/active_record/fixtures.rb +54 -8
- data/lib/active_record/gem_version.rb +3 -3
- data/lib/active_record/inheritance.rb +40 -18
- data/lib/active_record/insert_all.rb +35 -6
- data/lib/active_record/integration.rb +3 -5
- data/lib/active_record/internal_metadata.rb +16 -7
- data/lib/active_record/legacy_yaml_adapter.rb +7 -3
- data/lib/active_record/locking/optimistic.rb +22 -16
- data/lib/active_record/locking/pessimistic.rb +6 -2
- data/lib/active_record/log_subscriber.rb +26 -8
- data/lib/active_record/middleware/database_selector.rb +4 -1
- data/lib/active_record/middleware/database_selector/resolver.rb +5 -0
- data/lib/active_record/middleware/database_selector/resolver/session.rb +3 -0
- data/lib/active_record/migration.rb +113 -83
- data/lib/active_record/migration/command_recorder.rb +47 -27
- data/lib/active_record/migration/compatibility.rb +67 -17
- data/lib/active_record/model_schema.rb +117 -13
- data/lib/active_record/nested_attributes.rb +2 -3
- data/lib/active_record/no_touching.rb +1 -1
- data/lib/active_record/persistence.rb +50 -45
- data/lib/active_record/query_cache.rb +15 -5
- data/lib/active_record/querying.rb +11 -6
- data/lib/active_record/railtie.rb +64 -44
- data/lib/active_record/railties/databases.rake +266 -95
- data/lib/active_record/readonly_attributes.rb +4 -0
- data/lib/active_record/reflection.rb +71 -57
- data/lib/active_record/relation.rb +96 -67
- data/lib/active_record/relation/batches.rb +38 -31
- data/lib/active_record/relation/batches/batch_enumerator.rb +25 -9
- data/lib/active_record/relation/calculations.rb +101 -44
- data/lib/active_record/relation/delegation.rb +2 -1
- data/lib/active_record/relation/finder_methods.rb +45 -15
- data/lib/active_record/relation/from_clause.rb +1 -1
- data/lib/active_record/relation/merger.rb +27 -25
- data/lib/active_record/relation/predicate_builder.rb +57 -33
- data/lib/active_record/relation/predicate_builder/array_handler.rb +8 -9
- data/lib/active_record/relation/predicate_builder/association_query_value.rb +4 -5
- data/lib/active_record/relation/predicate_builder/polymorphic_array_value.rb +3 -3
- data/lib/active_record/relation/predicate_builder/relation_handler.rb +1 -1
- data/lib/active_record/relation/query_methods.rb +330 -195
- data/lib/active_record/relation/record_fetch_warning.rb +3 -3
- data/lib/active_record/relation/spawn_methods.rb +8 -7
- data/lib/active_record/relation/where_clause.rb +104 -57
- data/lib/active_record/result.rb +41 -33
- data/lib/active_record/runtime_registry.rb +2 -2
- data/lib/active_record/sanitization.rb +6 -17
- data/lib/active_record/schema_dumper.rb +34 -4
- data/lib/active_record/schema_migration.rb +2 -8
- data/lib/active_record/scoping/named.rb +6 -17
- data/lib/active_record/secure_token.rb +16 -8
- data/lib/active_record/serialization.rb +5 -3
- data/lib/active_record/signed_id.rb +116 -0
- data/lib/active_record/statement_cache.rb +20 -4
- data/lib/active_record/store.rb +2 -2
- data/lib/active_record/suppressor.rb +2 -2
- data/lib/active_record/table_metadata.rb +39 -51
- data/lib/active_record/tasks/database_tasks.rb +139 -113
- data/lib/active_record/tasks/mysql_database_tasks.rb +34 -35
- data/lib/active_record/tasks/postgresql_database_tasks.rb +24 -26
- data/lib/active_record/tasks/sqlite_database_tasks.rb +13 -9
- data/lib/active_record/test_databases.rb +5 -4
- data/lib/active_record/test_fixtures.rb +37 -16
- data/lib/active_record/timestamp.rb +4 -6
- data/lib/active_record/touch_later.rb +21 -21
- data/lib/active_record/transactions.rb +15 -64
- data/lib/active_record/type.rb +8 -1
- data/lib/active_record/type/serialized.rb +6 -2
- data/lib/active_record/type/time.rb +10 -0
- data/lib/active_record/type_caster/connection.rb +0 -1
- data/lib/active_record/type_caster/map.rb +8 -5
- data/lib/active_record/validations.rb +1 -0
- data/lib/active_record/validations/numericality.rb +35 -0
- data/lib/active_record/validations/uniqueness.rb +24 -4
- data/lib/arel.rb +5 -13
- data/lib/arel/attributes/attribute.rb +4 -0
- data/lib/arel/collectors/bind.rb +5 -0
- data/lib/arel/collectors/composite.rb +8 -0
- data/lib/arel/collectors/sql_string.rb +7 -0
- data/lib/arel/collectors/substitute_binds.rb +7 -0
- data/lib/arel/nodes.rb +3 -1
- data/lib/arel/nodes/binary.rb +82 -8
- data/lib/arel/nodes/bind_param.rb +8 -0
- data/lib/arel/nodes/casted.rb +21 -9
- data/lib/arel/nodes/equality.rb +6 -9
- data/lib/arel/nodes/grouping.rb +3 -0
- data/lib/arel/nodes/homogeneous_in.rb +72 -0
- data/lib/arel/nodes/in.rb +8 -1
- data/lib/arel/nodes/infix_operation.rb +13 -1
- data/lib/arel/nodes/join_source.rb +1 -1
- data/lib/arel/nodes/node.rb +7 -6
- data/lib/arel/nodes/ordering.rb +27 -0
- data/lib/arel/nodes/sql_literal.rb +3 -0
- data/lib/arel/nodes/table_alias.rb +7 -3
- data/lib/arel/nodes/unary.rb +0 -1
- data/lib/arel/predications.rb +12 -18
- data/lib/arel/select_manager.rb +1 -2
- data/lib/arel/table.rb +13 -5
- data/lib/arel/visitors.rb +0 -7
- data/lib/arel/visitors/dot.rb +14 -2
- data/lib/arel/visitors/mysql.rb +11 -1
- data/lib/arel/visitors/postgresql.rb +15 -4
- data/lib/arel/visitors/to_sql.rb +89 -78
- data/lib/rails/generators/active_record/migration.rb +6 -1
- data/lib/rails/generators/active_record/migration/migration_generator.rb +1 -0
- data/lib/rails/generators/active_record/migration/templates/create_table_migration.rb.tt +2 -0
- data/lib/rails/generators/active_record/migration/templates/migration.rb.tt +3 -3
- data/lib/rails/generators/active_record/model/model_generator.rb +39 -2
- data/lib/rails/generators/active_record/model/templates/abstract_base_class.rb.tt +7 -0
- metadata +28 -29
- data/lib/active_record/advisory_lock_base.rb +0 -18
- data/lib/active_record/attribute_decorators.rb +0 -88
- data/lib/active_record/connection_adapters/connection_specification.rb +0 -296
- data/lib/active_record/connection_adapters/determine_if_preparable_visitor.rb +0 -29
- data/lib/active_record/define_callbacks.rb +0 -22
- data/lib/active_record/railties/collection_cache_association_loading.rb +0 -34
- data/lib/active_record/relation/predicate_builder/base_handler.rb +0 -18
- data/lib/active_record/relation/where_clause_factory.rb +0 -33
- data/lib/arel/attributes.rb +0 -22
- data/lib/arel/visitors/depth_first.rb +0 -203
- data/lib/arel/visitors/ibm_db.rb +0 -34
- data/lib/arel/visitors/informix.rb +0 -62
- data/lib/arel/visitors/mssql.rb +0 -156
- data/lib/arel/visitors/oracle.rb +0 -158
- data/lib/arel/visitors/oracle12.rb +0 -65
- data/lib/arel/visitors/where_sql.rb +0 -22
@@ -22,6 +22,11 @@ module ActiveRecord
|
|
22
22
|
", id: :#{key_type}" if key_type
|
23
23
|
end
|
24
24
|
|
25
|
+
def foreign_key_type
|
26
|
+
key_type = options[:primary_key_type]
|
27
|
+
", type: :#{key_type}" if key_type
|
28
|
+
end
|
29
|
+
|
25
30
|
def db_migrate_path
|
26
31
|
if defined?(Rails.application) && Rails.application
|
27
32
|
configured_migrate_path || default_migrate_path
|
@@ -38,7 +43,7 @@ module ActiveRecord
|
|
38
43
|
return unless database = options[:database]
|
39
44
|
config = ActiveRecord::Base.configurations.configs_for(
|
40
45
|
env_name: Rails.env,
|
41
|
-
|
46
|
+
name: database
|
42
47
|
)
|
43
48
|
config&.migrations_paths
|
44
49
|
end
|
@@ -7,6 +7,7 @@ module ActiveRecord
|
|
7
7
|
class MigrationGenerator < Base # :nodoc:
|
8
8
|
argument :attributes, type: :array, default: [], banner: "field[:type][:index] field[:type][:index]"
|
9
9
|
|
10
|
+
class_option :timestamps, type: :boolean
|
10
11
|
class_option :primary_key_type, type: :string, desc: "The type for primary key"
|
11
12
|
class_option :database, type: :string, aliases: %i(--db), desc: "The database for your migration. By default, the current environment's primary database is used."
|
12
13
|
|
@@ -6,6 +6,8 @@ class <%= migration_class_name %> < ActiveRecord::Migration[<%= ActiveRecord::Mi
|
|
6
6
|
t.string :password_digest<%= attribute.inject_options %>
|
7
7
|
<% elsif attribute.token? -%>
|
8
8
|
t.string :<%= attribute.name %><%= attribute.inject_options %>
|
9
|
+
<% elsif attribute.reference? -%>
|
10
|
+
t.<%= attribute.type %> :<%= attribute.name %><%= attribute.inject_options %><%= foreign_key_type %>
|
9
11
|
<% elsif !attribute.virtual? -%>
|
10
12
|
t.<%= attribute.type %> :<%= attribute.name %><%= attribute.inject_options %>
|
11
13
|
<% end -%>
|
@@ -3,7 +3,7 @@ class <%= migration_class_name %> < ActiveRecord::Migration[<%= ActiveRecord::Mi
|
|
3
3
|
def change
|
4
4
|
<% attributes.each do |attribute| -%>
|
5
5
|
<%- if attribute.reference? -%>
|
6
|
-
add_reference :<%= table_name %>, :<%= attribute.name %><%= attribute.inject_options %>
|
6
|
+
add_reference :<%= table_name %>, :<%= attribute.name %><%= attribute.inject_options %><%= foreign_key_type %>
|
7
7
|
<%- elsif attribute.token? -%>
|
8
8
|
add_column :<%= table_name %>, :<%= attribute.name %>, :string<%= attribute.inject_options %>
|
9
9
|
add_index :<%= table_name %>, :<%= attribute.index_name %><%= attribute.inject_index_options %>, unique: true
|
@@ -20,7 +20,7 @@ class <%= migration_class_name %> < ActiveRecord::Migration[<%= ActiveRecord::Mi
|
|
20
20
|
create_join_table :<%= join_tables.first %>, :<%= join_tables.second %> do |t|
|
21
21
|
<%- attributes.each do |attribute| -%>
|
22
22
|
<%- if attribute.reference? -%>
|
23
|
-
t.references :<%= attribute.name %><%= attribute.inject_options %>
|
23
|
+
t.references :<%= attribute.name %><%= attribute.inject_options %><%= foreign_key_type %>
|
24
24
|
<%- elsif !attribute.virtual? -%>
|
25
25
|
<%= '# ' unless attribute.has_index? -%>t.index <%= attribute.index_name %><%= attribute.inject_index_options %>
|
26
26
|
<%- end -%>
|
@@ -32,7 +32,7 @@ class <%= migration_class_name %> < ActiveRecord::Migration[<%= ActiveRecord::Mi
|
|
32
32
|
<% attributes.each do |attribute| -%>
|
33
33
|
<%- if migration_action -%>
|
34
34
|
<%- if attribute.reference? -%>
|
35
|
-
remove_reference :<%= table_name %>, :<%= attribute.name %><%= attribute.inject_options %>
|
35
|
+
remove_reference :<%= table_name %>, :<%= attribute.name %><%= attribute.inject_options %><%= foreign_key_type %>
|
36
36
|
<%- else -%>
|
37
37
|
<%- if attribute.has_index? -%>
|
38
38
|
remove_index :<%= table_name %>, :<%= attribute.index_name %><%= attribute.inject_index_options %>
|
@@ -18,12 +18,13 @@ module ActiveRecord
|
|
18
18
|
|
19
19
|
# creates the migration file for the model.
|
20
20
|
def create_migration_file
|
21
|
-
return
|
21
|
+
return if skip_migration_creation?
|
22
22
|
attributes.each { |a| a.attr_options.delete(:index) if a.reference? && !a.has_index? } if options[:indexes] == false
|
23
23
|
migration_template "../../migration/templates/create_table_migration.rb", File.join(db_migrate_path, "create_#{table_name}.rb")
|
24
24
|
end
|
25
25
|
|
26
26
|
def create_model_file
|
27
|
+
generate_abstract_class if database && !parent
|
27
28
|
template "model.rb", File.join("app/models", class_path, "#{file_name}.rb")
|
28
29
|
end
|
29
30
|
|
@@ -35,13 +36,49 @@ module ActiveRecord
|
|
35
36
|
hook_for :test_framework
|
36
37
|
|
37
38
|
private
|
39
|
+
# Skip creating migration file if:
|
40
|
+
# - options parent is present and database option is not present
|
41
|
+
# - migrations option is nil or false
|
42
|
+
def skip_migration_creation?
|
43
|
+
parent && !database || !migration
|
44
|
+
end
|
45
|
+
|
38
46
|
def attributes_with_index
|
39
47
|
attributes.select { |a| !a.reference? && a.has_index? }
|
40
48
|
end
|
41
49
|
|
42
50
|
# Used by the migration template to determine the parent name of the model
|
43
51
|
def parent_class_name
|
44
|
-
|
52
|
+
if parent
|
53
|
+
parent
|
54
|
+
elsif database
|
55
|
+
abstract_class_name
|
56
|
+
else
|
57
|
+
"ApplicationRecord"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def generate_abstract_class
|
62
|
+
path = File.join("app/models", "#{database.underscore}_record.rb")
|
63
|
+
return if File.exist?(path)
|
64
|
+
|
65
|
+
template "abstract_base_class.rb", path
|
66
|
+
end
|
67
|
+
|
68
|
+
def abstract_class_name
|
69
|
+
"#{database.camelize}Record"
|
70
|
+
end
|
71
|
+
|
72
|
+
def database
|
73
|
+
options[:database]
|
74
|
+
end
|
75
|
+
|
76
|
+
def parent
|
77
|
+
options[:parent]
|
78
|
+
end
|
79
|
+
|
80
|
+
def migration
|
81
|
+
options[:migration]
|
45
82
|
end
|
46
83
|
end
|
47
84
|
end
|
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.0
|
4
|
+
version: 6.1.0
|
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: 2020-
|
11
|
+
date: 2020-12-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.0
|
19
|
+
version: 6.1.0
|
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.0
|
26
|
+
version: 6.1.0
|
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.0
|
33
|
+
version: 6.1.0
|
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.0
|
40
|
+
version: 6.1.0
|
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.
|
@@ -53,7 +53,6 @@ files:
|
|
53
53
|
- examples/performance.rb
|
54
54
|
- examples/simple.rb
|
55
55
|
- lib/active_record.rb
|
56
|
-
- lib/active_record/advisory_lock_base.rb
|
57
56
|
- lib/active_record/aggregations.rb
|
58
57
|
- lib/active_record/association_relation.rb
|
59
58
|
- lib/active_record/associations.rb
|
@@ -86,7 +85,6 @@ files:
|
|
86
85
|
- lib/active_record/associations/singular_association.rb
|
87
86
|
- lib/active_record/associations/through_association.rb
|
88
87
|
- lib/active_record/attribute_assignment.rb
|
89
|
-
- lib/active_record/attribute_decorators.rb
|
90
88
|
- lib/active_record/attribute_methods.rb
|
91
89
|
- lib/active_record/attribute_methods/before_type_cast.rb
|
92
90
|
- lib/active_record/attribute_methods/dirty.rb
|
@@ -102,6 +100,7 @@ files:
|
|
102
100
|
- lib/active_record/callbacks.rb
|
103
101
|
- lib/active_record/coders/json.rb
|
104
102
|
- lib/active_record/coders/yaml_column.rb
|
103
|
+
- lib/active_record/connection_adapters.rb
|
105
104
|
- lib/active_record/connection_adapters/abstract/connection_pool.rb
|
106
105
|
- lib/active_record/connection_adapters/abstract/database_limits.rb
|
107
106
|
- lib/active_record/connection_adapters/abstract/database_statements.rb
|
@@ -116,8 +115,8 @@ files:
|
|
116
115
|
- lib/active_record/connection_adapters/abstract_adapter.rb
|
117
116
|
- lib/active_record/connection_adapters/abstract_mysql_adapter.rb
|
118
117
|
- lib/active_record/connection_adapters/column.rb
|
119
|
-
- lib/active_record/connection_adapters/
|
120
|
-
- lib/active_record/connection_adapters/
|
118
|
+
- lib/active_record/connection_adapters/deduplicable.rb
|
119
|
+
- lib/active_record/connection_adapters/legacy_pool_manager.rb
|
121
120
|
- lib/active_record/connection_adapters/mysql/column.rb
|
122
121
|
- lib/active_record/connection_adapters/mysql/database_statements.rb
|
123
122
|
- lib/active_record/connection_adapters/mysql/explain_pretty_printer.rb
|
@@ -128,6 +127,8 @@ files:
|
|
128
127
|
- lib/active_record/connection_adapters/mysql/schema_statements.rb
|
129
128
|
- lib/active_record/connection_adapters/mysql/type_metadata.rb
|
130
129
|
- lib/active_record/connection_adapters/mysql2_adapter.rb
|
130
|
+
- lib/active_record/connection_adapters/pool_config.rb
|
131
|
+
- lib/active_record/connection_adapters/pool_manager.rb
|
131
132
|
- lib/active_record/connection_adapters/postgresql/column.rb
|
132
133
|
- lib/active_record/connection_adapters/postgresql/database_statements.rb
|
133
134
|
- lib/active_record/connection_adapters/postgresql/explain_pretty_printer.rb
|
@@ -143,8 +144,10 @@ files:
|
|
143
144
|
- lib/active_record/connection_adapters/postgresql/oid/enum.rb
|
144
145
|
- lib/active_record/connection_adapters/postgresql/oid/hstore.rb
|
145
146
|
- lib/active_record/connection_adapters/postgresql/oid/inet.rb
|
147
|
+
- lib/active_record/connection_adapters/postgresql/oid/interval.rb
|
146
148
|
- lib/active_record/connection_adapters/postgresql/oid/jsonb.rb
|
147
149
|
- lib/active_record/connection_adapters/postgresql/oid/legacy_point.rb
|
150
|
+
- lib/active_record/connection_adapters/postgresql/oid/macaddr.rb
|
148
151
|
- lib/active_record/connection_adapters/postgresql/oid/money.rb
|
149
152
|
- lib/active_record/connection_adapters/postgresql/oid/oid.rb
|
150
153
|
- lib/active_record/connection_adapters/postgresql/oid/point.rb
|
@@ -178,10 +181,12 @@ files:
|
|
178
181
|
- lib/active_record/core.rb
|
179
182
|
- lib/active_record/counter_cache.rb
|
180
183
|
- lib/active_record/database_configurations.rb
|
184
|
+
- lib/active_record/database_configurations/connection_url_resolver.rb
|
181
185
|
- lib/active_record/database_configurations/database_config.rb
|
182
186
|
- lib/active_record/database_configurations/hash_config.rb
|
183
187
|
- lib/active_record/database_configurations/url_config.rb
|
184
|
-
- lib/active_record/
|
188
|
+
- lib/active_record/delegated_type.rb
|
189
|
+
- lib/active_record/destroy_association_async_job.rb
|
185
190
|
- lib/active_record/dynamic_matchers.rb
|
186
191
|
- lib/active_record/enum.rb
|
187
192
|
- lib/active_record/errors.rb
|
@@ -219,7 +224,6 @@ files:
|
|
219
224
|
- lib/active_record/query_cache.rb
|
220
225
|
- lib/active_record/querying.rb
|
221
226
|
- lib/active_record/railtie.rb
|
222
|
-
- lib/active_record/railties/collection_cache_association_loading.rb
|
223
227
|
- lib/active_record/railties/console_sandbox.rb
|
224
228
|
- lib/active_record/railties/controller_runtime.rb
|
225
229
|
- lib/active_record/railties/databases.rake
|
@@ -236,7 +240,6 @@ files:
|
|
236
240
|
- lib/active_record/relation/predicate_builder.rb
|
237
241
|
- lib/active_record/relation/predicate_builder/array_handler.rb
|
238
242
|
- lib/active_record/relation/predicate_builder/association_query_value.rb
|
239
|
-
- lib/active_record/relation/predicate_builder/base_handler.rb
|
240
243
|
- lib/active_record/relation/predicate_builder/basic_object_handler.rb
|
241
244
|
- lib/active_record/relation/predicate_builder/polymorphic_array_value.rb
|
242
245
|
- lib/active_record/relation/predicate_builder/range_handler.rb
|
@@ -246,7 +249,6 @@ files:
|
|
246
249
|
- lib/active_record/relation/record_fetch_warning.rb
|
247
250
|
- lib/active_record/relation/spawn_methods.rb
|
248
251
|
- lib/active_record/relation/where_clause.rb
|
249
|
-
- lib/active_record/relation/where_clause_factory.rb
|
250
252
|
- lib/active_record/result.rb
|
251
253
|
- lib/active_record/runtime_registry.rb
|
252
254
|
- lib/active_record/sanitization.rb
|
@@ -258,6 +260,7 @@ files:
|
|
258
260
|
- lib/active_record/scoping/named.rb
|
259
261
|
- lib/active_record/secure_token.rb
|
260
262
|
- lib/active_record/serialization.rb
|
263
|
+
- lib/active_record/signed_id.rb
|
261
264
|
- lib/active_record/statement_cache.rb
|
262
265
|
- lib/active_record/store.rb
|
263
266
|
- lib/active_record/suppressor.rb
|
@@ -292,12 +295,12 @@ files:
|
|
292
295
|
- lib/active_record/validations/absence.rb
|
293
296
|
- lib/active_record/validations/associated.rb
|
294
297
|
- lib/active_record/validations/length.rb
|
298
|
+
- lib/active_record/validations/numericality.rb
|
295
299
|
- lib/active_record/validations/presence.rb
|
296
300
|
- lib/active_record/validations/uniqueness.rb
|
297
301
|
- lib/active_record/version.rb
|
298
302
|
- lib/arel.rb
|
299
303
|
- lib/arel/alias_predication.rb
|
300
|
-
- lib/arel/attributes.rb
|
301
304
|
- lib/arel/attributes/attribute.rb
|
302
305
|
- lib/arel/collectors/bind.rb
|
303
306
|
- lib/arel/collectors/composite.rb
|
@@ -328,6 +331,7 @@ files:
|
|
328
331
|
- lib/arel/nodes/full_outer_join.rb
|
329
332
|
- lib/arel/nodes/function.rb
|
330
333
|
- lib/arel/nodes/grouping.rb
|
334
|
+
- lib/arel/nodes/homogeneous_in.rb
|
331
335
|
- lib/arel/nodes/in.rb
|
332
336
|
- lib/arel/nodes/infix_operation.rb
|
333
337
|
- lib/arel/nodes/inner_join.rb
|
@@ -337,6 +341,7 @@ files:
|
|
337
341
|
- lib/arel/nodes/named_function.rb
|
338
342
|
- lib/arel/nodes/node.rb
|
339
343
|
- lib/arel/nodes/node_expression.rb
|
344
|
+
- lib/arel/nodes/ordering.rb
|
340
345
|
- lib/arel/nodes/outer_join.rb
|
341
346
|
- lib/arel/nodes/over.rb
|
342
347
|
- lib/arel/nodes/regexp.rb
|
@@ -362,19 +367,12 @@ files:
|
|
362
367
|
- lib/arel/tree_manager.rb
|
363
368
|
- lib/arel/update_manager.rb
|
364
369
|
- lib/arel/visitors.rb
|
365
|
-
- lib/arel/visitors/depth_first.rb
|
366
370
|
- lib/arel/visitors/dot.rb
|
367
|
-
- lib/arel/visitors/ibm_db.rb
|
368
|
-
- lib/arel/visitors/informix.rb
|
369
|
-
- lib/arel/visitors/mssql.rb
|
370
371
|
- lib/arel/visitors/mysql.rb
|
371
|
-
- lib/arel/visitors/oracle.rb
|
372
|
-
- lib/arel/visitors/oracle12.rb
|
373
372
|
- lib/arel/visitors/postgresql.rb
|
374
373
|
- lib/arel/visitors/sqlite.rb
|
375
374
|
- lib/arel/visitors/to_sql.rb
|
376
375
|
- lib/arel/visitors/visitor.rb
|
377
|
-
- lib/arel/visitors/where_sql.rb
|
378
376
|
- lib/arel/window_predications.rb
|
379
377
|
- lib/rails/generators/active_record.rb
|
380
378
|
- lib/rails/generators/active_record/application_record/application_record_generator.rb
|
@@ -384,6 +382,7 @@ files:
|
|
384
382
|
- lib/rails/generators/active_record/migration/templates/create_table_migration.rb.tt
|
385
383
|
- lib/rails/generators/active_record/migration/templates/migration.rb.tt
|
386
384
|
- lib/rails/generators/active_record/model/model_generator.rb
|
385
|
+
- lib/rails/generators/active_record/model/templates/abstract_base_class.rb.tt
|
387
386
|
- lib/rails/generators/active_record/model/templates/model.rb.tt
|
388
387
|
- lib/rails/generators/active_record/model/templates/module.rb.tt
|
389
388
|
homepage: https://rubyonrails.org
|
@@ -391,11 +390,11 @@ licenses:
|
|
391
390
|
- MIT
|
392
391
|
metadata:
|
393
392
|
bug_tracker_uri: https://github.com/rails/rails/issues
|
394
|
-
changelog_uri: https://github.com/rails/rails/blob/v6.0
|
395
|
-
documentation_uri: https://api.rubyonrails.org/v6.0
|
393
|
+
changelog_uri: https://github.com/rails/rails/blob/v6.1.0/activerecord/CHANGELOG.md
|
394
|
+
documentation_uri: https://api.rubyonrails.org/v6.1.0/
|
396
395
|
mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
|
397
|
-
source_code_uri: https://github.com/rails/rails/tree/v6.0
|
398
|
-
post_install_message:
|
396
|
+
source_code_uri: https://github.com/rails/rails/tree/v6.1.0/activerecord
|
397
|
+
post_install_message:
|
399
398
|
rdoc_options:
|
400
399
|
- "--main"
|
401
400
|
- README.rdoc
|
@@ -412,8 +411,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
412
411
|
- !ruby/object:Gem::Version
|
413
412
|
version: '0'
|
414
413
|
requirements: []
|
415
|
-
rubygems_version: 3.1.
|
416
|
-
signing_key:
|
414
|
+
rubygems_version: 3.1.4
|
415
|
+
signing_key:
|
417
416
|
specification_version: 4
|
418
417
|
summary: Object-relational mapper framework (part of Rails).
|
419
418
|
test_files: []
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module ActiveRecord
|
4
|
-
# This class is used to create a connection that we can use for advisory
|
5
|
-
# locks. This will take out a "global" lock that can't be accidentally
|
6
|
-
# removed if a new connection is established during a migration.
|
7
|
-
class AdvisoryLockBase < ActiveRecord::Base # :nodoc:
|
8
|
-
self.abstract_class = true
|
9
|
-
|
10
|
-
self.connection_specification_name = "AdvisoryLockBase"
|
11
|
-
|
12
|
-
class << self
|
13
|
-
def _internal?
|
14
|
-
true
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,88 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module ActiveRecord
|
4
|
-
module AttributeDecorators # :nodoc:
|
5
|
-
extend ActiveSupport::Concern
|
6
|
-
|
7
|
-
included do
|
8
|
-
class_attribute :attribute_type_decorations, instance_accessor: false, default: TypeDecorator.new # :internal:
|
9
|
-
end
|
10
|
-
|
11
|
-
module ClassMethods # :nodoc:
|
12
|
-
# This method is an internal API used to create class macros such as
|
13
|
-
# +serialize+, and features like time zone aware attributes.
|
14
|
-
#
|
15
|
-
# Used to wrap the type of an attribute in a new type.
|
16
|
-
# When the schema for a model is loaded, attributes with the same name as
|
17
|
-
# +column_name+ will have their type yielded to the given block. The
|
18
|
-
# return value of that block will be used instead.
|
19
|
-
#
|
20
|
-
# Subsequent calls where +column_name+ and +decorator_name+ are the same
|
21
|
-
# will override the previous decorator, not decorate twice. This can be
|
22
|
-
# used to create idempotent class macros like +serialize+
|
23
|
-
def decorate_attribute_type(column_name, decorator_name, &block)
|
24
|
-
matcher = ->(name, _) { name == column_name.to_s }
|
25
|
-
key = "_#{column_name}_#{decorator_name}"
|
26
|
-
decorate_matching_attribute_types(matcher, key, &block)
|
27
|
-
end
|
28
|
-
|
29
|
-
# This method is an internal API used to create higher level features like
|
30
|
-
# time zone aware attributes.
|
31
|
-
#
|
32
|
-
# When the schema for a model is loaded, +matcher+ will be called for each
|
33
|
-
# attribute with its name and type. If the matcher returns a truthy value,
|
34
|
-
# the type will then be yielded to the given block, and the return value
|
35
|
-
# of that block will replace the type.
|
36
|
-
#
|
37
|
-
# Subsequent calls to this method with the same value for +decorator_name+
|
38
|
-
# will replace the previous decorator, not decorate twice. This can be
|
39
|
-
# used to ensure that class macros are idempotent.
|
40
|
-
def decorate_matching_attribute_types(matcher, decorator_name, &block)
|
41
|
-
reload_schema_from_cache
|
42
|
-
decorator_name = decorator_name.to_s
|
43
|
-
|
44
|
-
# Create new hashes so we don't modify parent classes
|
45
|
-
self.attribute_type_decorations = attribute_type_decorations.merge(decorator_name => [matcher, block])
|
46
|
-
end
|
47
|
-
|
48
|
-
private
|
49
|
-
def load_schema!
|
50
|
-
super
|
51
|
-
attribute_types.each do |name, type|
|
52
|
-
decorated_type = attribute_type_decorations.apply(name, type)
|
53
|
-
define_attribute(name, decorated_type)
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
|
-
class TypeDecorator # :nodoc:
|
59
|
-
delegate :clear, to: :@decorations
|
60
|
-
|
61
|
-
def initialize(decorations = {})
|
62
|
-
@decorations = decorations
|
63
|
-
end
|
64
|
-
|
65
|
-
def merge(*args)
|
66
|
-
TypeDecorator.new(@decorations.merge(*args))
|
67
|
-
end
|
68
|
-
|
69
|
-
def apply(name, type)
|
70
|
-
decorations = decorators_for(name, type)
|
71
|
-
decorations.inject(type) do |new_type, block|
|
72
|
-
block.call(new_type)
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
private
|
77
|
-
def decorators_for(name, type)
|
78
|
-
matching(name, type).map(&:last)
|
79
|
-
end
|
80
|
-
|
81
|
-
def matching(name, type)
|
82
|
-
@decorations.values.select do |(matcher, _)|
|
83
|
-
matcher.call(name, type)
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|