activerecord 7.1.5 → 7.2.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (183) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +515 -2440
  3. data/README.rdoc +15 -15
  4. data/examples/performance.rb +2 -2
  5. data/lib/active_record/association_relation.rb +1 -1
  6. data/lib/active_record/associations/alias_tracker.rb +25 -19
  7. data/lib/active_record/associations/association.rb +9 -8
  8. data/lib/active_record/associations/belongs_to_association.rb +14 -7
  9. data/lib/active_record/associations/belongs_to_polymorphic_association.rb +3 -2
  10. data/lib/active_record/associations/builder/belongs_to.rb +1 -0
  11. data/lib/active_record/associations/builder/has_and_belongs_to_many.rb +2 -2
  12. data/lib/active_record/associations/builder/has_many.rb +3 -4
  13. data/lib/active_record/associations/builder/has_one.rb +3 -4
  14. data/lib/active_record/associations/collection_association.rb +6 -4
  15. data/lib/active_record/associations/collection_proxy.rb +14 -1
  16. data/lib/active_record/associations/has_many_association.rb +1 -1
  17. data/lib/active_record/associations/join_dependency/join_association.rb +29 -28
  18. data/lib/active_record/associations/join_dependency.rb +5 -5
  19. data/lib/active_record/associations/nested_error.rb +47 -0
  20. data/lib/active_record/associations/preloader/association.rb +2 -1
  21. data/lib/active_record/associations/preloader/branch.rb +7 -1
  22. data/lib/active_record/associations/preloader/through_association.rb +1 -3
  23. data/lib/active_record/associations/singular_association.rb +6 -0
  24. data/lib/active_record/associations/through_association.rb +1 -1
  25. data/lib/active_record/associations.rb +33 -16
  26. data/lib/active_record/attribute_assignment.rb +1 -11
  27. data/lib/active_record/attribute_methods/composite_primary_key.rb +84 -0
  28. data/lib/active_record/attribute_methods/dirty.rb +1 -1
  29. data/lib/active_record/attribute_methods/primary_key.rb +23 -55
  30. data/lib/active_record/attribute_methods/read.rb +4 -16
  31. data/lib/active_record/attribute_methods/serialization.rb +4 -24
  32. data/lib/active_record/attribute_methods/time_zone_conversion.rb +7 -10
  33. data/lib/active_record/attribute_methods/write.rb +3 -3
  34. data/lib/active_record/attribute_methods.rb +60 -71
  35. data/lib/active_record/attributes.rb +55 -42
  36. data/lib/active_record/autosave_association.rb +13 -32
  37. data/lib/active_record/base.rb +2 -3
  38. data/lib/active_record/connection_adapters/abstract/connection_handler.rb +24 -107
  39. data/lib/active_record/connection_adapters/abstract/connection_pool/reaper.rb +1 -0
  40. data/lib/active_record/connection_adapters/abstract/connection_pool.rb +248 -65
  41. data/lib/active_record/connection_adapters/abstract/database_statements.rb +34 -17
  42. data/lib/active_record/connection_adapters/abstract/query_cache.rb +159 -74
  43. data/lib/active_record/connection_adapters/abstract/quoting.rb +65 -91
  44. data/lib/active_record/connection_adapters/abstract/schema_definitions.rb +1 -1
  45. data/lib/active_record/connection_adapters/abstract/schema_statements.rb +14 -5
  46. data/lib/active_record/connection_adapters/abstract/transaction.rb +60 -57
  47. data/lib/active_record/connection_adapters/abstract_adapter.rb +18 -46
  48. data/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +32 -6
  49. data/lib/active_record/connection_adapters/mysql/database_statements.rb +9 -1
  50. data/lib/active_record/connection_adapters/mysql/quoting.rb +43 -48
  51. data/lib/active_record/connection_adapters/mysql/schema_statements.rb +7 -1
  52. data/lib/active_record/connection_adapters/mysql2/database_statements.rb +11 -5
  53. data/lib/active_record/connection_adapters/mysql2_adapter.rb +5 -23
  54. data/lib/active_record/connection_adapters/pool_config.rb +7 -6
  55. data/lib/active_record/connection_adapters/postgresql/database_statements.rb +27 -4
  56. data/lib/active_record/connection_adapters/postgresql/oid/cidr.rb +1 -1
  57. data/lib/active_record/connection_adapters/postgresql/oid/interval.rb +1 -1
  58. data/lib/active_record/connection_adapters/postgresql/oid/uuid.rb +14 -4
  59. data/lib/active_record/connection_adapters/postgresql/quoting.rb +58 -58
  60. data/lib/active_record/connection_adapters/postgresql/schema_definitions.rb +20 -0
  61. data/lib/active_record/connection_adapters/postgresql/schema_statements.rb +15 -13
  62. data/lib/active_record/connection_adapters/postgresql_adapter.rb +26 -21
  63. data/lib/active_record/connection_adapters/schema_cache.rb +123 -128
  64. data/lib/active_record/connection_adapters/sqlite3/column.rb +14 -1
  65. data/lib/active_record/connection_adapters/sqlite3/database_statements.rb +10 -6
  66. data/lib/active_record/connection_adapters/sqlite3/quoting.rb +44 -46
  67. data/lib/active_record/connection_adapters/sqlite3/schema_creation.rb +22 -0
  68. data/lib/active_record/connection_adapters/sqlite3/schema_definitions.rb +13 -0
  69. data/lib/active_record/connection_adapters/sqlite3/schema_dumper.rb +16 -0
  70. data/lib/active_record/connection_adapters/sqlite3/schema_statements.rb +25 -2
  71. data/lib/active_record/connection_adapters/sqlite3_adapter.rb +107 -75
  72. data/lib/active_record/connection_adapters/trilogy/database_statements.rb +12 -6
  73. data/lib/active_record/connection_adapters/trilogy_adapter.rb +19 -48
  74. data/lib/active_record/connection_adapters.rb +121 -0
  75. data/lib/active_record/connection_handling.rb +56 -41
  76. data/lib/active_record/core.rb +53 -37
  77. data/lib/active_record/counter_cache.rb +18 -9
  78. data/lib/active_record/database_configurations/connection_url_resolver.rb +8 -3
  79. data/lib/active_record/database_configurations/database_config.rb +15 -4
  80. data/lib/active_record/database_configurations/hash_config.rb +38 -34
  81. data/lib/active_record/database_configurations/url_config.rb +20 -1
  82. data/lib/active_record/database_configurations.rb +1 -1
  83. data/lib/active_record/delegated_type.rb +24 -0
  84. data/lib/active_record/dynamic_matchers.rb +2 -2
  85. data/lib/active_record/encryption/encryptable_record.rb +2 -2
  86. data/lib/active_record/encryption/encrypted_attribute_type.rb +22 -2
  87. data/lib/active_record/encryption/encryptor.rb +17 -2
  88. data/lib/active_record/encryption/message_pack_message_serializer.rb +76 -0
  89. data/lib/active_record/encryption/message_serializer.rb +4 -0
  90. data/lib/active_record/encryption/null_encryptor.rb +4 -0
  91. data/lib/active_record/encryption/read_only_null_encryptor.rb +4 -0
  92. data/lib/active_record/encryption.rb +0 -2
  93. data/lib/active_record/enum.rb +10 -1
  94. data/lib/active_record/errors.rb +16 -11
  95. data/lib/active_record/explain.rb +13 -24
  96. data/lib/active_record/fixtures.rb +37 -31
  97. data/lib/active_record/future_result.rb +8 -4
  98. data/lib/active_record/gem_version.rb +3 -3
  99. data/lib/active_record/inheritance.rb +4 -2
  100. data/lib/active_record/insert_all.rb +18 -15
  101. data/lib/active_record/integration.rb +4 -1
  102. data/lib/active_record/internal_metadata.rb +48 -34
  103. data/lib/active_record/locking/optimistic.rb +7 -6
  104. data/lib/active_record/log_subscriber.rb +0 -21
  105. data/lib/active_record/marshalling.rb +1 -4
  106. data/lib/active_record/message_pack.rb +1 -1
  107. data/lib/active_record/migration/command_recorder.rb +2 -3
  108. data/lib/active_record/migration/compatibility.rb +5 -3
  109. data/lib/active_record/migration/default_strategy.rb +4 -5
  110. data/lib/active_record/migration/pending_migration_connection.rb +2 -2
  111. data/lib/active_record/migration.rb +85 -76
  112. data/lib/active_record/model_schema.rb +28 -68
  113. data/lib/active_record/nested_attributes.rb +13 -16
  114. data/lib/active_record/normalization.rb +3 -7
  115. data/lib/active_record/persistence.rb +30 -352
  116. data/lib/active_record/query_cache.rb +18 -6
  117. data/lib/active_record/query_logs.rb +15 -0
  118. data/lib/active_record/querying.rb +21 -9
  119. data/lib/active_record/railtie.rb +50 -62
  120. data/lib/active_record/railties/controller_runtime.rb +13 -4
  121. data/lib/active_record/railties/databases.rake +41 -44
  122. data/lib/active_record/reflection.rb +90 -35
  123. data/lib/active_record/relation/batches/batch_enumerator.rb +15 -2
  124. data/lib/active_record/relation/batches.rb +3 -3
  125. data/lib/active_record/relation/calculations.rb +94 -61
  126. data/lib/active_record/relation/delegation.rb +8 -11
  127. data/lib/active_record/relation/finder_methods.rb +16 -2
  128. data/lib/active_record/relation/merger.rb +4 -6
  129. data/lib/active_record/relation/predicate_builder/array_handler.rb +2 -2
  130. data/lib/active_record/relation/predicate_builder.rb +3 -3
  131. data/lib/active_record/relation/query_methods.rb +196 -57
  132. data/lib/active_record/relation/record_fetch_warning.rb +3 -0
  133. data/lib/active_record/relation/spawn_methods.rb +2 -18
  134. data/lib/active_record/relation/where_clause.rb +7 -19
  135. data/lib/active_record/relation.rb +496 -72
  136. data/lib/active_record/result.rb +31 -44
  137. data/lib/active_record/runtime_registry.rb +39 -0
  138. data/lib/active_record/sanitization.rb +24 -19
  139. data/lib/active_record/schema.rb +8 -6
  140. data/lib/active_record/schema_dumper.rb +19 -9
  141. data/lib/active_record/schema_migration.rb +30 -14
  142. data/lib/active_record/signed_id.rb +11 -1
  143. data/lib/active_record/statement_cache.rb +7 -7
  144. data/lib/active_record/table_metadata.rb +1 -10
  145. data/lib/active_record/tasks/database_tasks.rb +76 -70
  146. data/lib/active_record/tasks/mysql_database_tasks.rb +1 -1
  147. data/lib/active_record/tasks/postgresql_database_tasks.rb +1 -1
  148. data/lib/active_record/tasks/sqlite_database_tasks.rb +2 -1
  149. data/lib/active_record/test_fixtures.rb +81 -91
  150. data/lib/active_record/testing/query_assertions.rb +121 -0
  151. data/lib/active_record/timestamp.rb +1 -1
  152. data/lib/active_record/token_for.rb +22 -12
  153. data/lib/active_record/touch_later.rb +1 -1
  154. data/lib/active_record/transaction.rb +68 -0
  155. data/lib/active_record/transactions.rb +43 -14
  156. data/lib/active_record/translation.rb +0 -2
  157. data/lib/active_record/type/serialized.rb +1 -3
  158. data/lib/active_record/type_caster/connection.rb +4 -4
  159. data/lib/active_record/validations/associated.rb +9 -3
  160. data/lib/active_record/validations/uniqueness.rb +14 -10
  161. data/lib/active_record/validations.rb +4 -1
  162. data/lib/active_record.rb +149 -40
  163. data/lib/arel/alias_predication.rb +1 -1
  164. data/lib/arel/collectors/bind.rb +2 -0
  165. data/lib/arel/collectors/composite.rb +7 -0
  166. data/lib/arel/collectors/sql_string.rb +1 -1
  167. data/lib/arel/collectors/substitute_binds.rb +1 -1
  168. data/lib/arel/nodes/binary.rb +0 -6
  169. data/lib/arel/nodes/bound_sql_literal.rb +9 -5
  170. data/lib/arel/nodes/{and.rb → nary.rb} +5 -2
  171. data/lib/arel/nodes/node.rb +4 -3
  172. data/lib/arel/nodes/sql_literal.rb +7 -0
  173. data/lib/arel/nodes.rb +2 -2
  174. data/lib/arel/predications.rb +1 -1
  175. data/lib/arel/select_manager.rb +1 -1
  176. data/lib/arel/tree_manager.rb +3 -2
  177. data/lib/arel/update_manager.rb +2 -1
  178. data/lib/arel/visitors/dot.rb +1 -0
  179. data/lib/arel/visitors/mysql.rb +9 -4
  180. data/lib/arel/visitors/postgresql.rb +1 -12
  181. data/lib/arel/visitors/to_sql.rb +29 -16
  182. data/lib/arel.rb +7 -3
  183. metadata +20 -15
@@ -20,6 +20,7 @@ module Arel # :nodoc: all
20
20
 
21
21
  private
22
22
  def visit_Arel_Nodes_DeleteStatement(o, collector)
23
+ collector.retryable = false
23
24
  o = prepare_delete_statement(o)
24
25
 
25
26
  if has_join_sources?(o)
@@ -37,6 +38,7 @@ module Arel # :nodoc: all
37
38
  end
38
39
 
39
40
  def visit_Arel_Nodes_UpdateStatement(o, collector)
41
+ collector.retryable = false
40
42
  o = prepare_update_statement(o)
41
43
 
42
44
  collector << "UPDATE "
@@ -49,6 +51,7 @@ module Arel # :nodoc: all
49
51
  end
50
52
 
51
53
  def visit_Arel_Nodes_InsertStatement(o, collector)
54
+ collector.retryable = false
52
55
  collector << "INSERT INTO "
53
56
  collector = visit o.relation, collector
54
57
 
@@ -381,6 +384,7 @@ module Arel # :nodoc: all
381
384
  end
382
385
 
383
386
  def visit_Arel_Nodes_NamedFunction(o, collector)
387
+ collector.retryable = false
384
388
  collector << o.name
385
389
  collector << "("
386
390
  collector << "DISTINCT " if o.distinct
@@ -582,10 +586,11 @@ module Arel # :nodoc: all
582
586
  end
583
587
 
584
588
  def visit_Arel_Nodes_In(o, collector)
585
- collector.preparable = false
586
589
  attr, values = o.left, o.right
587
590
 
588
591
  if Array === values
592
+ collector.preparable = false
593
+
589
594
  unless values.empty?
590
595
  values.delete_if { |value| unboundable?(value) }
591
596
  end
@@ -598,10 +603,11 @@ module Arel # :nodoc: all
598
603
  end
599
604
 
600
605
  def visit_Arel_Nodes_NotIn(o, collector)
601
- collector.preparable = false
602
606
  attr, values = o.left, o.right
603
607
 
604
608
  if Array === values
609
+ collector.preparable = false
610
+
605
611
  unless values.empty?
606
612
  values.delete_if { |value| unboundable?(value) }
607
613
  end
@@ -618,18 +624,7 @@ module Arel # :nodoc: all
618
624
  end
619
625
 
620
626
  def visit_Arel_Nodes_Or(o, collector)
621
- stack = [o.right, o.left]
622
-
623
- while o = stack.pop
624
- if o.is_a?(Arel::Nodes::Or)
625
- stack.push o.right, o.left
626
- else
627
- visit o, collector
628
- collector << " OR " unless stack.empty?
629
- end
630
- end
631
-
632
- collector
627
+ inject_join o.children, collector, " OR "
633
628
  end
634
629
 
635
630
  def visit_Arel_Nodes_Assignment(o, collector)
@@ -768,10 +763,12 @@ module Arel # :nodoc: all
768
763
 
769
764
  def visit_Arel_Nodes_SqlLiteral(o, collector)
770
765
  collector.preparable = false
766
+ collector.retryable = o.retryable
771
767
  collector << o.to_s
772
768
  end
773
769
 
774
770
  def visit_Arel_Nodes_BoundSqlLiteral(o, collector)
771
+ collector.retryable = false
775
772
  bind_index = 0
776
773
 
777
774
  new_bind = lambda do |value|
@@ -968,18 +965,34 @@ module Arel # :nodoc: all
968
965
  collector = if o.left.class == o.class
969
966
  infix_value_with_paren(o.left, collector, value, true)
970
967
  else
971
- visit o.left, collector
968
+ grouping_parentheses o.left, collector, false
972
969
  end
973
970
  collector << value
974
971
  collector = if o.right.class == o.class
975
972
  infix_value_with_paren(o.right, collector, value, true)
976
973
  else
977
- visit o.right, collector
974
+ grouping_parentheses o.right, collector, false
978
975
  end
979
976
  collector << " )" unless suppress_parens
980
977
  collector
981
978
  end
982
979
 
980
+ # Used by some visitors to enclose select queries in parentheses
981
+ def grouping_parentheses(o, collector, always_wrap_selects = true)
982
+ if o.is_a?(Nodes::SelectStatement) && (always_wrap_selects || require_parentheses?(o))
983
+ collector << "("
984
+ visit o, collector
985
+ collector << ")"
986
+ collector
987
+ else
988
+ visit o, collector
989
+ end
990
+ end
991
+
992
+ def require_parentheses?(o)
993
+ !o.orders.empty? || o.limit || o.offset
994
+ end
995
+
983
996
  def aggregate(name, o, collector)
984
997
  collector << "#{name}("
985
998
  if o.distinct
data/lib/arel.rb CHANGED
@@ -45,16 +45,20 @@ module Arel
45
45
  # that this behavior only applies when bind value parameters are
46
46
  # supplied in the call; without them, the placeholder tokens have no
47
47
  # special meaning, and will be passed through to the query as-is.
48
- def self.sql(sql_string, *positional_binds, **named_binds)
48
+ #
49
+ # The +:retryable+ option can be used to mark the SQL as safe to retry.
50
+ # Use this option only if the SQL is idempotent, as it could be executed
51
+ # more than once.
52
+ def self.sql(sql_string, *positional_binds, retryable: false, **named_binds)
49
53
  if positional_binds.empty? && named_binds.empty?
50
- Arel::Nodes::SqlLiteral.new sql_string
54
+ Arel::Nodes::SqlLiteral.new(sql_string, retryable: retryable)
51
55
  else
52
56
  Arel::Nodes::BoundSqlLiteral.new sql_string, positional_binds, named_binds
53
57
  end
54
58
  end
55
59
 
56
60
  def self.star # :nodoc:
57
- sql "*"
61
+ sql("*", retryable: true)
58
62
  end
59
63
 
60
64
  def self.arel_node?(value) # :nodoc:
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.5
4
+ version: 7.2.0.beta1
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: 2024-10-31 00:00:00.000000000 Z
11
+ date: 2024-05-29 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.5
19
+ version: 7.2.0.beta1
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.5
26
+ version: 7.2.0.beta1
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.5
33
+ version: 7.2.0.beta1
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.5
40
+ version: 7.2.0.beta1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: timeout
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +94,7 @@ files:
94
94
  - lib/active_record/associations/join_dependency/join_association.rb
95
95
  - lib/active_record/associations/join_dependency/join_base.rb
96
96
  - lib/active_record/associations/join_dependency/join_part.rb
97
+ - lib/active_record/associations/nested_error.rb
97
98
  - lib/active_record/associations/preloader.rb
98
99
  - lib/active_record/associations/preloader/association.rb
99
100
  - lib/active_record/associations/preloader/batch.rb
@@ -105,6 +106,7 @@ files:
105
106
  - lib/active_record/attribute_assignment.rb
106
107
  - lib/active_record/attribute_methods.rb
107
108
  - lib/active_record/attribute_methods/before_type_cast.rb
109
+ - lib/active_record/attribute_methods/composite_primary_key.rb
108
110
  - lib/active_record/attribute_methods/dirty.rb
109
111
  - lib/active_record/attribute_methods/primary_key.rb
110
112
  - lib/active_record/attribute_methods/query.rb
@@ -240,6 +242,7 @@ files:
240
242
  - lib/active_record/encryption/key_generator.rb
241
243
  - lib/active_record/encryption/key_provider.rb
242
244
  - lib/active_record/encryption/message.rb
245
+ - lib/active_record/encryption/message_pack_message_serializer.rb
243
246
  - lib/active_record/encryption/message_serializer.rb
244
247
  - lib/active_record/encryption/null_encryptor.rb
245
248
  - lib/active_record/encryption/properties.rb
@@ -340,9 +343,11 @@ files:
340
343
  - lib/active_record/tasks/sqlite_database_tasks.rb
341
344
  - lib/active_record/test_databases.rb
342
345
  - lib/active_record/test_fixtures.rb
346
+ - lib/active_record/testing/query_assertions.rb
343
347
  - lib/active_record/timestamp.rb
344
348
  - lib/active_record/token_for.rb
345
349
  - lib/active_record/touch_later.rb
350
+ - lib/active_record/transaction.rb
346
351
  - lib/active_record/transactions.rb
347
352
  - lib/active_record/translation.rb
348
353
  - lib/active_record/type.rb
@@ -386,7 +391,6 @@ files:
386
391
  - lib/arel/insert_manager.rb
387
392
  - lib/arel/math.rb
388
393
  - lib/arel/nodes.rb
389
- - lib/arel/nodes/and.rb
390
394
  - lib/arel/nodes/ascending.rb
391
395
  - lib/arel/nodes/binary.rb
392
396
  - lib/arel/nodes/bind_param.rb
@@ -415,6 +419,7 @@ files:
415
419
  - lib/arel/nodes/leading_join.rb
416
420
  - lib/arel/nodes/matches.rb
417
421
  - lib/arel/nodes/named_function.rb
422
+ - lib/arel/nodes/nary.rb
418
423
  - lib/arel/nodes/node.rb
419
424
  - lib/arel/nodes/node_expression.rb
420
425
  - lib/arel/nodes/ordering.rb
@@ -470,12 +475,12 @@ licenses:
470
475
  - MIT
471
476
  metadata:
472
477
  bug_tracker_uri: https://github.com/rails/rails/issues
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/
478
+ changelog_uri: https://github.com/rails/rails/blob/v7.2.0.beta1/activerecord/CHANGELOG.md
479
+ documentation_uri: https://api.rubyonrails.org/v7.2.0.beta1/
475
480
  mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
476
- source_code_uri: https://github.com/rails/rails/tree/v7.1.5/activerecord
481
+ source_code_uri: https://github.com/rails/rails/tree/v7.2.0.beta1/activerecord
477
482
  rubygems_mfa_required: 'true'
478
- post_install_message:
483
+ post_install_message:
479
484
  rdoc_options:
480
485
  - "--main"
481
486
  - README.rdoc
@@ -485,15 +490,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
485
490
  requirements:
486
491
  - - ">="
487
492
  - !ruby/object:Gem::Version
488
- version: 2.7.0
493
+ version: 3.1.0
489
494
  required_rubygems_version: !ruby/object:Gem::Requirement
490
495
  requirements:
491
496
  - - ">="
492
497
  - !ruby/object:Gem::Version
493
498
  version: '0'
494
499
  requirements: []
495
- rubygems_version: 3.5.16
496
- signing_key:
500
+ rubygems_version: 3.5.10
501
+ signing_key:
497
502
  specification_version: 4
498
503
  summary: Object-relational mapper framework (part of Rails).
499
504
  test_files: []