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.

Files changed (244) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +804 -708
  3. data/MIT-LICENSE +1 -1
  4. data/README.rdoc +2 -2
  5. data/lib/active_record.rb +7 -14
  6. data/lib/active_record/aggregations.rb +1 -1
  7. data/lib/active_record/association_relation.rb +22 -14
  8. data/lib/active_record/associations.rb +114 -11
  9. data/lib/active_record/associations/alias_tracker.rb +19 -15
  10. data/lib/active_record/associations/association.rb +44 -28
  11. data/lib/active_record/associations/association_scope.rb +17 -15
  12. data/lib/active_record/associations/belongs_to_association.rb +15 -5
  13. data/lib/active_record/associations/belongs_to_polymorphic_association.rb +1 -1
  14. data/lib/active_record/associations/builder/association.rb +9 -3
  15. data/lib/active_record/associations/builder/belongs_to.rb +10 -7
  16. data/lib/active_record/associations/builder/collection_association.rb +5 -4
  17. data/lib/active_record/associations/builder/has_and_belongs_to_many.rb +0 -1
  18. data/lib/active_record/associations/builder/has_many.rb +6 -2
  19. data/lib/active_record/associations/builder/has_one.rb +11 -14
  20. data/lib/active_record/associations/builder/singular_association.rb +1 -1
  21. data/lib/active_record/associations/collection_association.rb +19 -6
  22. data/lib/active_record/associations/collection_proxy.rb +13 -5
  23. data/lib/active_record/associations/foreign_association.rb +13 -0
  24. data/lib/active_record/associations/has_many_association.rb +24 -2
  25. data/lib/active_record/associations/has_many_through_association.rb +10 -4
  26. data/lib/active_record/associations/has_one_association.rb +15 -1
  27. data/lib/active_record/associations/join_dependency.rb +72 -50
  28. data/lib/active_record/associations/join_dependency/join_association.rb +36 -14
  29. data/lib/active_record/associations/join_dependency/join_part.rb +3 -3
  30. data/lib/active_record/associations/preloader.rb +11 -5
  31. data/lib/active_record/associations/preloader/association.rb +51 -25
  32. data/lib/active_record/associations/preloader/through_association.rb +2 -2
  33. data/lib/active_record/associations/singular_association.rb +1 -1
  34. data/lib/active_record/associations/through_association.rb +1 -1
  35. data/lib/active_record/attribute_assignment.rb +10 -8
  36. data/lib/active_record/attribute_methods.rb +64 -54
  37. data/lib/active_record/attribute_methods/before_type_cast.rb +13 -9
  38. data/lib/active_record/attribute_methods/dirty.rb +1 -11
  39. data/lib/active_record/attribute_methods/primary_key.rb +6 -2
  40. data/lib/active_record/attribute_methods/query.rb +3 -6
  41. data/lib/active_record/attribute_methods/read.rb +8 -11
  42. data/lib/active_record/attribute_methods/serialization.rb +11 -5
  43. data/lib/active_record/attribute_methods/time_zone_conversion.rb +12 -13
  44. data/lib/active_record/attribute_methods/write.rb +12 -20
  45. data/lib/active_record/attributes.rb +32 -7
  46. data/lib/active_record/autosave_association.rb +57 -40
  47. data/lib/active_record/base.rb +2 -14
  48. data/lib/active_record/callbacks.rb +152 -22
  49. data/lib/active_record/coders/yaml_column.rb +1 -1
  50. data/lib/active_record/connection_adapters.rb +50 -0
  51. data/lib/active_record/connection_adapters/abstract/connection_pool.rb +191 -134
  52. data/lib/active_record/connection_adapters/abstract/database_limits.rb +2 -44
  53. data/lib/active_record/connection_adapters/abstract/database_statements.rb +65 -22
  54. data/lib/active_record/connection_adapters/abstract/query_cache.rb +2 -7
  55. data/lib/active_record/connection_adapters/abstract/quoting.rb +34 -34
  56. data/lib/active_record/connection_adapters/abstract/savepoints.rb +3 -3
  57. data/lib/active_record/connection_adapters/abstract/schema_creation.rb +153 -116
  58. data/lib/active_record/connection_adapters/abstract/schema_definitions.rb +112 -27
  59. data/lib/active_record/connection_adapters/abstract/schema_dumper.rb +3 -3
  60. data/lib/active_record/connection_adapters/abstract/schema_statements.rb +224 -85
  61. data/lib/active_record/connection_adapters/abstract/transaction.rb +80 -32
  62. data/lib/active_record/connection_adapters/abstract_adapter.rb +54 -71
  63. data/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +129 -88
  64. data/lib/active_record/connection_adapters/column.rb +15 -1
  65. data/lib/active_record/connection_adapters/deduplicable.rb +29 -0
  66. data/lib/active_record/connection_adapters/legacy_pool_manager.rb +31 -0
  67. data/lib/active_record/connection_adapters/mysql/database_statements.rb +23 -25
  68. data/lib/active_record/connection_adapters/mysql/explain_pretty_printer.rb +1 -1
  69. data/lib/active_record/connection_adapters/mysql/quoting.rb +1 -1
  70. data/lib/active_record/connection_adapters/mysql/schema_creation.rb +32 -6
  71. data/lib/active_record/connection_adapters/mysql/schema_definitions.rb +8 -0
  72. data/lib/active_record/connection_adapters/mysql/schema_dumper.rb +1 -1
  73. data/lib/active_record/connection_adapters/mysql/schema_statements.rb +11 -7
  74. data/lib/active_record/connection_adapters/mysql/type_metadata.rb +10 -1
  75. data/lib/active_record/connection_adapters/mysql2_adapter.rb +31 -12
  76. data/lib/active_record/connection_adapters/pool_config.rb +63 -0
  77. data/lib/active_record/connection_adapters/pool_manager.rb +43 -0
  78. data/lib/active_record/connection_adapters/postgresql/column.rb +24 -1
  79. data/lib/active_record/connection_adapters/postgresql/database_statements.rb +13 -54
  80. data/lib/active_record/connection_adapters/postgresql/oid.rb +2 -0
  81. data/lib/active_record/connection_adapters/postgresql/oid/cidr.rb +3 -5
  82. data/lib/active_record/connection_adapters/postgresql/oid/date.rb +2 -2
  83. data/lib/active_record/connection_adapters/postgresql/oid/date_time.rb +10 -2
  84. data/lib/active_record/connection_adapters/postgresql/oid/interval.rb +49 -0
  85. data/lib/active_record/connection_adapters/postgresql/oid/legacy_point.rb +2 -2
  86. data/lib/active_record/connection_adapters/postgresql/oid/macaddr.rb +25 -0
  87. data/lib/active_record/connection_adapters/postgresql/oid/point.rb +2 -2
  88. data/lib/active_record/connection_adapters/postgresql/oid/range.rb +24 -5
  89. data/lib/active_record/connection_adapters/postgresql/oid/uuid.rb +11 -1
  90. data/lib/active_record/connection_adapters/postgresql/quoting.rb +4 -4
  91. data/lib/active_record/connection_adapters/postgresql/referential_integrity.rb +1 -1
  92. data/lib/active_record/connection_adapters/postgresql/schema_creation.rb +5 -1
  93. data/lib/active_record/connection_adapters/postgresql/schema_statements.rb +61 -29
  94. data/lib/active_record/connection_adapters/postgresql/type_metadata.rb +8 -0
  95. data/lib/active_record/connection_adapters/postgresql_adapter.rb +72 -55
  96. data/lib/active_record/connection_adapters/schema_cache.rb +98 -15
  97. data/lib/active_record/connection_adapters/sql_type_metadata.rb +10 -0
  98. data/lib/active_record/connection_adapters/sqlite3/database_statements.rb +31 -6
  99. data/lib/active_record/connection_adapters/sqlite3/quoting.rb +1 -1
  100. data/lib/active_record/connection_adapters/sqlite3/schema_creation.rb +5 -1
  101. data/lib/active_record/connection_adapters/sqlite3/schema_statements.rb +37 -4
  102. data/lib/active_record/connection_adapters/sqlite3_adapter.rb +49 -50
  103. data/lib/active_record/connection_handling.rb +210 -71
  104. data/lib/active_record/core.rb +229 -63
  105. data/lib/active_record/database_configurations.rb +124 -85
  106. data/lib/active_record/database_configurations/connection_url_resolver.rb +98 -0
  107. data/lib/active_record/database_configurations/database_config.rb +52 -9
  108. data/lib/active_record/database_configurations/hash_config.rb +54 -8
  109. data/lib/active_record/database_configurations/url_config.rb +15 -40
  110. data/lib/active_record/delegated_type.rb +209 -0
  111. data/lib/active_record/destroy_association_async_job.rb +36 -0
  112. data/lib/active_record/enum.rb +40 -16
  113. data/lib/active_record/errors.rb +47 -12
  114. data/lib/active_record/explain.rb +9 -4
  115. data/lib/active_record/explain_subscriber.rb +1 -1
  116. data/lib/active_record/fixture_set/file.rb +10 -17
  117. data/lib/active_record/fixture_set/model_metadata.rb +1 -2
  118. data/lib/active_record/fixture_set/render_context.rb +1 -1
  119. data/lib/active_record/fixture_set/table_row.rb +2 -2
  120. data/lib/active_record/fixtures.rb +54 -8
  121. data/lib/active_record/gem_version.rb +3 -3
  122. data/lib/active_record/inheritance.rb +40 -18
  123. data/lib/active_record/insert_all.rb +35 -6
  124. data/lib/active_record/integration.rb +3 -5
  125. data/lib/active_record/internal_metadata.rb +16 -7
  126. data/lib/active_record/legacy_yaml_adapter.rb +7 -3
  127. data/lib/active_record/locking/optimistic.rb +22 -16
  128. data/lib/active_record/locking/pessimistic.rb +6 -2
  129. data/lib/active_record/log_subscriber.rb +26 -8
  130. data/lib/active_record/middleware/database_selector.rb +4 -1
  131. data/lib/active_record/middleware/database_selector/resolver.rb +5 -0
  132. data/lib/active_record/middleware/database_selector/resolver/session.rb +3 -0
  133. data/lib/active_record/migration.rb +113 -83
  134. data/lib/active_record/migration/command_recorder.rb +47 -27
  135. data/lib/active_record/migration/compatibility.rb +67 -17
  136. data/lib/active_record/model_schema.rb +117 -13
  137. data/lib/active_record/nested_attributes.rb +2 -3
  138. data/lib/active_record/no_touching.rb +1 -1
  139. data/lib/active_record/persistence.rb +50 -45
  140. data/lib/active_record/query_cache.rb +15 -5
  141. data/lib/active_record/querying.rb +11 -6
  142. data/lib/active_record/railtie.rb +64 -44
  143. data/lib/active_record/railties/databases.rake +266 -95
  144. data/lib/active_record/readonly_attributes.rb +4 -0
  145. data/lib/active_record/reflection.rb +71 -57
  146. data/lib/active_record/relation.rb +96 -67
  147. data/lib/active_record/relation/batches.rb +38 -31
  148. data/lib/active_record/relation/batches/batch_enumerator.rb +25 -9
  149. data/lib/active_record/relation/calculations.rb +101 -44
  150. data/lib/active_record/relation/delegation.rb +2 -1
  151. data/lib/active_record/relation/finder_methods.rb +45 -15
  152. data/lib/active_record/relation/from_clause.rb +1 -1
  153. data/lib/active_record/relation/merger.rb +27 -25
  154. data/lib/active_record/relation/predicate_builder.rb +57 -33
  155. data/lib/active_record/relation/predicate_builder/array_handler.rb +8 -9
  156. data/lib/active_record/relation/predicate_builder/association_query_value.rb +4 -5
  157. data/lib/active_record/relation/predicate_builder/polymorphic_array_value.rb +3 -3
  158. data/lib/active_record/relation/predicate_builder/relation_handler.rb +1 -1
  159. data/lib/active_record/relation/query_methods.rb +330 -195
  160. data/lib/active_record/relation/record_fetch_warning.rb +3 -3
  161. data/lib/active_record/relation/spawn_methods.rb +8 -7
  162. data/lib/active_record/relation/where_clause.rb +104 -57
  163. data/lib/active_record/result.rb +41 -33
  164. data/lib/active_record/runtime_registry.rb +2 -2
  165. data/lib/active_record/sanitization.rb +6 -17
  166. data/lib/active_record/schema_dumper.rb +34 -4
  167. data/lib/active_record/schema_migration.rb +2 -8
  168. data/lib/active_record/scoping/named.rb +6 -17
  169. data/lib/active_record/secure_token.rb +16 -8
  170. data/lib/active_record/serialization.rb +5 -3
  171. data/lib/active_record/signed_id.rb +116 -0
  172. data/lib/active_record/statement_cache.rb +20 -4
  173. data/lib/active_record/store.rb +2 -2
  174. data/lib/active_record/suppressor.rb +2 -2
  175. data/lib/active_record/table_metadata.rb +39 -51
  176. data/lib/active_record/tasks/database_tasks.rb +139 -113
  177. data/lib/active_record/tasks/mysql_database_tasks.rb +34 -35
  178. data/lib/active_record/tasks/postgresql_database_tasks.rb +24 -26
  179. data/lib/active_record/tasks/sqlite_database_tasks.rb +13 -9
  180. data/lib/active_record/test_databases.rb +5 -4
  181. data/lib/active_record/test_fixtures.rb +37 -16
  182. data/lib/active_record/timestamp.rb +4 -6
  183. data/lib/active_record/touch_later.rb +21 -21
  184. data/lib/active_record/transactions.rb +15 -64
  185. data/lib/active_record/type.rb +8 -1
  186. data/lib/active_record/type/serialized.rb +6 -2
  187. data/lib/active_record/type/time.rb +10 -0
  188. data/lib/active_record/type_caster/connection.rb +0 -1
  189. data/lib/active_record/type_caster/map.rb +8 -5
  190. data/lib/active_record/validations.rb +1 -0
  191. data/lib/active_record/validations/numericality.rb +35 -0
  192. data/lib/active_record/validations/uniqueness.rb +24 -4
  193. data/lib/arel.rb +5 -13
  194. data/lib/arel/attributes/attribute.rb +4 -0
  195. data/lib/arel/collectors/bind.rb +5 -0
  196. data/lib/arel/collectors/composite.rb +8 -0
  197. data/lib/arel/collectors/sql_string.rb +7 -0
  198. data/lib/arel/collectors/substitute_binds.rb +7 -0
  199. data/lib/arel/nodes.rb +3 -1
  200. data/lib/arel/nodes/binary.rb +82 -8
  201. data/lib/arel/nodes/bind_param.rb +8 -0
  202. data/lib/arel/nodes/casted.rb +21 -9
  203. data/lib/arel/nodes/equality.rb +6 -9
  204. data/lib/arel/nodes/grouping.rb +3 -0
  205. data/lib/arel/nodes/homogeneous_in.rb +72 -0
  206. data/lib/arel/nodes/in.rb +8 -1
  207. data/lib/arel/nodes/infix_operation.rb +13 -1
  208. data/lib/arel/nodes/join_source.rb +1 -1
  209. data/lib/arel/nodes/node.rb +7 -6
  210. data/lib/arel/nodes/ordering.rb +27 -0
  211. data/lib/arel/nodes/sql_literal.rb +3 -0
  212. data/lib/arel/nodes/table_alias.rb +7 -3
  213. data/lib/arel/nodes/unary.rb +0 -1
  214. data/lib/arel/predications.rb +12 -18
  215. data/lib/arel/select_manager.rb +1 -2
  216. data/lib/arel/table.rb +13 -5
  217. data/lib/arel/visitors.rb +0 -7
  218. data/lib/arel/visitors/dot.rb +14 -2
  219. data/lib/arel/visitors/mysql.rb +11 -1
  220. data/lib/arel/visitors/postgresql.rb +15 -4
  221. data/lib/arel/visitors/to_sql.rb +89 -78
  222. data/lib/rails/generators/active_record/migration.rb +6 -1
  223. data/lib/rails/generators/active_record/migration/migration_generator.rb +1 -0
  224. data/lib/rails/generators/active_record/migration/templates/create_table_migration.rb.tt +2 -0
  225. data/lib/rails/generators/active_record/migration/templates/migration.rb.tt +3 -3
  226. data/lib/rails/generators/active_record/model/model_generator.rb +39 -2
  227. data/lib/rails/generators/active_record/model/templates/abstract_base_class.rb.tt +7 -0
  228. metadata +28 -29
  229. data/lib/active_record/advisory_lock_base.rb +0 -18
  230. data/lib/active_record/attribute_decorators.rb +0 -88
  231. data/lib/active_record/connection_adapters/connection_specification.rb +0 -296
  232. data/lib/active_record/connection_adapters/determine_if_preparable_visitor.rb +0 -29
  233. data/lib/active_record/define_callbacks.rb +0 -22
  234. data/lib/active_record/railties/collection_cache_association_loading.rb +0 -34
  235. data/lib/active_record/relation/predicate_builder/base_handler.rb +0 -18
  236. data/lib/active_record/relation/where_clause_factory.rb +0 -33
  237. data/lib/arel/attributes.rb +0 -22
  238. data/lib/arel/visitors/depth_first.rb +0 -203
  239. data/lib/arel/visitors/ibm_db.rb +0 -34
  240. data/lib/arel/visitors/informix.rb +0 -62
  241. data/lib/arel/visitors/mssql.rb +0 -156
  242. data/lib/arel/visitors/oracle.rb +0 -158
  243. data/lib/arel/visitors/oracle12.rb +0 -65
  244. 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
- spec_name: database,
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 unless options[:migration] && options[:parent].nil?
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
- options[:parent] || "ApplicationRecord"
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
@@ -0,0 +1,7 @@
1
+ <% module_namespacing do -%>
2
+ class <%= abstract_class_name %> < ApplicationRecord
3
+ self.abstract_class = true
4
+
5
+ connects_to database: { <%= ActiveRecord::Base.writing_role %>: :<%= database -%> }
6
+ end
7
+ <% 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.3.2
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-06-17 00:00:00.000000000 Z
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.3.2
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.3.2
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.3.2
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.3.2
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/connection_specification.rb
120
- - lib/active_record/connection_adapters/determine_if_preparable_visitor.rb
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/define_callbacks.rb
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.3.2/activerecord/CHANGELOG.md
395
- documentation_uri: https://api.rubyonrails.org/v6.0.3.2/
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.3.2/activerecord
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.2
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