activerecord 7.1.5.1 → 7.2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (185) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +645 -2329
  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 +15 -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 +7 -1
  15. data/lib/active_record/associations/collection_proxy.rb +14 -1
  16. data/lib/active_record/associations/errors.rb +265 -0
  17. data/lib/active_record/associations/has_many_association.rb +1 -1
  18. data/lib/active_record/associations/has_many_through_association.rb +7 -1
  19. data/lib/active_record/associations/join_dependency/join_association.rb +27 -25
  20. data/lib/active_record/associations/nested_error.rb +47 -0
  21. data/lib/active_record/associations/preloader/association.rb +2 -1
  22. data/lib/active_record/associations/preloader/branch.rb +7 -1
  23. data/lib/active_record/associations/preloader/through_association.rb +1 -3
  24. data/lib/active_record/associations/singular_association.rb +6 -0
  25. data/lib/active_record/associations/through_association.rb +1 -1
  26. data/lib/active_record/associations.rb +59 -292
  27. data/lib/active_record/attribute_assignment.rb +0 -2
  28. data/lib/active_record/attribute_methods/composite_primary_key.rb +84 -0
  29. data/lib/active_record/attribute_methods/primary_key.rb +23 -55
  30. data/lib/active_record/attribute_methods/read.rb +1 -13
  31. data/lib/active_record/attribute_methods/serialization.rb +4 -24
  32. data/lib/active_record/attribute_methods/time_zone_conversion.rb +7 -6
  33. data/lib/active_record/attribute_methods.rb +54 -63
  34. data/lib/active_record/attributes.rb +61 -47
  35. data/lib/active_record/autosave_association.rb +12 -29
  36. data/lib/active_record/base.rb +2 -3
  37. data/lib/active_record/callbacks.rb +1 -1
  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 +270 -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 +189 -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 +15 -6
  46. data/lib/active_record/connection_adapters/abstract/transaction.rb +125 -62
  47. data/lib/active_record/connection_adapters/abstract_adapter.rb +24 -44
  48. data/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +40 -10
  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 +6 -0
  52. data/lib/active_record/connection_adapters/mysql2/database_statements.rb +16 -15
  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/interval.rb +1 -1
  57. data/lib/active_record/connection_adapters/postgresql/oid/uuid.rb +14 -4
  58. data/lib/active_record/connection_adapters/postgresql/quoting.rb +58 -58
  59. data/lib/active_record/connection_adapters/postgresql/schema_definitions.rb +20 -0
  60. data/lib/active_record/connection_adapters/postgresql/schema_statements.rb +15 -11
  61. data/lib/active_record/connection_adapters/postgresql_adapter.rb +29 -24
  62. data/lib/active_record/connection_adapters/schema_cache.rb +123 -128
  63. data/lib/active_record/connection_adapters/sqlite3/column.rb +14 -1
  64. data/lib/active_record/connection_adapters/sqlite3/database_statements.rb +10 -6
  65. data/lib/active_record/connection_adapters/sqlite3/quoting.rb +44 -46
  66. data/lib/active_record/connection_adapters/sqlite3/schema_creation.rb +22 -0
  67. data/lib/active_record/connection_adapters/sqlite3/schema_definitions.rb +13 -0
  68. data/lib/active_record/connection_adapters/sqlite3/schema_dumper.rb +16 -0
  69. data/lib/active_record/connection_adapters/sqlite3/schema_statements.rb +25 -2
  70. data/lib/active_record/connection_adapters/sqlite3_adapter.rb +125 -75
  71. data/lib/active_record/connection_adapters/trilogy/database_statements.rb +15 -15
  72. data/lib/active_record/connection_adapters/trilogy_adapter.rb +19 -48
  73. data/lib/active_record/connection_adapters.rb +121 -0
  74. data/lib/active_record/connection_handling.rb +56 -41
  75. data/lib/active_record/core.rb +85 -37
  76. data/lib/active_record/counter_cache.rb +18 -9
  77. data/lib/active_record/database_configurations/connection_url_resolver.rb +7 -2
  78. data/lib/active_record/database_configurations/database_config.rb +19 -4
  79. data/lib/active_record/database_configurations/hash_config.rb +38 -34
  80. data/lib/active_record/database_configurations/url_config.rb +20 -1
  81. data/lib/active_record/database_configurations.rb +1 -1
  82. data/lib/active_record/delegated_type.rb +24 -0
  83. data/lib/active_record/dynamic_matchers.rb +2 -2
  84. data/lib/active_record/encryption/encryptable_record.rb +3 -3
  85. data/lib/active_record/encryption/encrypted_attribute_type.rb +24 -4
  86. data/lib/active_record/encryption/encryptor.rb +18 -3
  87. data/lib/active_record/encryption/key_provider.rb +1 -1
  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/enum.rb +18 -1
  93. data/lib/active_record/errors.rb +46 -20
  94. data/lib/active_record/explain.rb +13 -24
  95. data/lib/active_record/fixtures.rb +37 -31
  96. data/lib/active_record/future_result.rb +8 -4
  97. data/lib/active_record/gem_version.rb +2 -2
  98. data/lib/active_record/inheritance.rb +4 -2
  99. data/lib/active_record/insert_all.rb +18 -15
  100. data/lib/active_record/integration.rb +4 -1
  101. data/lib/active_record/internal_metadata.rb +48 -34
  102. data/lib/active_record/locking/optimistic.rb +7 -6
  103. data/lib/active_record/log_subscriber.rb +0 -21
  104. data/lib/active_record/message_pack.rb +1 -1
  105. data/lib/active_record/migration/command_recorder.rb +2 -3
  106. data/lib/active_record/migration/compatibility.rb +5 -3
  107. data/lib/active_record/migration/default_strategy.rb +4 -5
  108. data/lib/active_record/migration/pending_migration_connection.rb +2 -2
  109. data/lib/active_record/migration.rb +85 -76
  110. data/lib/active_record/model_schema.rb +31 -68
  111. data/lib/active_record/nested_attributes.rb +11 -3
  112. data/lib/active_record/normalization.rb +3 -7
  113. data/lib/active_record/persistence.rb +30 -352
  114. data/lib/active_record/query_cache.rb +19 -8
  115. data/lib/active_record/query_logs.rb +15 -0
  116. data/lib/active_record/querying.rb +21 -9
  117. data/lib/active_record/railtie.rb +37 -55
  118. data/lib/active_record/railties/controller_runtime.rb +13 -4
  119. data/lib/active_record/railties/databases.rake +40 -43
  120. data/lib/active_record/reflection.rb +98 -36
  121. data/lib/active_record/relation/batches/batch_enumerator.rb +15 -2
  122. data/lib/active_record/relation/batches.rb +14 -8
  123. data/lib/active_record/relation/calculations.rb +96 -63
  124. data/lib/active_record/relation/delegation.rb +8 -11
  125. data/lib/active_record/relation/finder_methods.rb +16 -2
  126. data/lib/active_record/relation/merger.rb +4 -6
  127. data/lib/active_record/relation/predicate_builder/array_handler.rb +2 -2
  128. data/lib/active_record/relation/predicate_builder/association_query_value.rb +9 -3
  129. data/lib/active_record/relation/predicate_builder.rb +3 -3
  130. data/lib/active_record/relation/query_methods.rb +224 -58
  131. data/lib/active_record/relation/record_fetch_warning.rb +3 -0
  132. data/lib/active_record/relation/spawn_methods.rb +2 -18
  133. data/lib/active_record/relation/where_clause.rb +7 -19
  134. data/lib/active_record/relation.rb +496 -72
  135. data/lib/active_record/result.rb +31 -44
  136. data/lib/active_record/runtime_registry.rb +39 -0
  137. data/lib/active_record/sanitization.rb +24 -19
  138. data/lib/active_record/schema.rb +8 -6
  139. data/lib/active_record/schema_dumper.rb +19 -9
  140. data/lib/active_record/schema_migration.rb +30 -14
  141. data/lib/active_record/scoping/named.rb +1 -0
  142. data/lib/active_record/signed_id.rb +20 -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 +69 -41
  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 +86 -89
  150. data/lib/active_record/testing/query_assertions.rb +121 -0
  151. data/lib/active_record/timestamp.rb +2 -2
  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 +132 -0
  155. data/lib/active_record/transactions.rb +70 -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 +15 -10
  161. data/lib/active_record/validations.rb +4 -1
  162. data/lib/active_record.rb +148 -39
  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/sqlite.rb +25 -0
  182. data/lib/arel/visitors/to_sql.rb +29 -16
  183. data/lib/arel.rb +7 -3
  184. data/lib/rails/generators/active_record/migration/templates/create_table_migration.rb.tt +4 -1
  185. metadata +16 -10
@@ -13,17 +13,13 @@ module ActiveRecord
13
13
  class NullInternalMetadata # :nodoc:
14
14
  end
15
15
 
16
- attr_reader :connection, :arel_table
16
+ attr_reader :arel_table
17
17
 
18
- def initialize(connection)
19
- @connection = connection
18
+ def initialize(pool)
19
+ @pool = pool
20
20
  @arel_table = Arel::Table.new(table_name)
21
21
  end
22
22
 
23
- def enabled?
24
- connection.use_metadata_table?
25
- end
26
-
27
23
  def primary_key
28
24
  "key"
29
25
  end
@@ -36,50 +32,66 @@ module ActiveRecord
36
32
  "#{ActiveRecord::Base.table_name_prefix}#{ActiveRecord::Base.internal_metadata_table_name}#{ActiveRecord::Base.table_name_suffix}"
37
33
  end
38
34
 
35
+ def enabled?
36
+ @pool.db_config.use_metadata_table?
37
+ end
38
+
39
39
  def []=(key, value)
40
40
  return unless enabled?
41
41
 
42
- update_or_create_entry(key, value)
42
+ @pool.with_connection do |connection|
43
+ update_or_create_entry(connection, key, value)
44
+ end
43
45
  end
44
46
 
45
47
  def [](key)
46
48
  return unless enabled?
47
49
 
48
- if entry = select_entry(key)
49
- entry[value_key]
50
+ @pool.with_connection do |connection|
51
+ if entry = select_entry(connection, key)
52
+ entry[value_key]
53
+ end
50
54
  end
51
55
  end
52
56
 
53
57
  def delete_all_entries
54
58
  dm = Arel::DeleteManager.new(arel_table)
55
59
 
56
- connection.delete(dm, "#{self.class} Destroy")
60
+ @pool.with_connection do |connection|
61
+ connection.delete(dm, "#{self.class} Destroy")
62
+ end
57
63
  end
58
64
 
59
65
  def count
60
66
  sm = Arel::SelectManager.new(arel_table)
61
67
  sm.project(*Arel::Nodes::Count.new([Arel.star]))
62
68
 
63
- connection.select_values(sm, "#{self.class} Count").first
69
+ @pool.with_connection do |connection|
70
+ connection.select_values(sm, "#{self.class} Count").first
71
+ end
64
72
  end
65
73
 
66
74
  def create_table_and_set_flags(environment, schema_sha1 = nil)
67
75
  return unless enabled?
68
76
 
69
- create_table
70
- update_or_create_entry(:environment, environment)
71
- update_or_create_entry(:schema_sha1, schema_sha1) if schema_sha1
77
+ @pool.with_connection do |connection|
78
+ create_table
79
+ update_or_create_entry(connection, :environment, environment)
80
+ update_or_create_entry(connection, :schema_sha1, schema_sha1) if schema_sha1
81
+ end
72
82
  end
73
83
 
74
84
  # Creates an internal metadata table with columns +key+ and +value+
75
85
  def create_table
76
86
  return unless enabled?
77
87
 
78
- unless connection.table_exists?(table_name)
79
- connection.create_table(table_name, id: false) do |t|
80
- t.string :key, **connection.internal_string_options_for_primary_key
81
- t.string :value
82
- t.timestamps
88
+ @pool.with_connection do |connection|
89
+ unless connection.table_exists?(table_name)
90
+ connection.create_table(table_name, id: false) do |t|
91
+ t.string :key, **connection.internal_string_options_for_primary_key
92
+ t.string :value
93
+ t.timestamps
94
+ end
83
95
  end
84
96
  end
85
97
  end
@@ -87,49 +99,51 @@ module ActiveRecord
87
99
  def drop_table
88
100
  return unless enabled?
89
101
 
90
- connection.drop_table table_name, if_exists: true
102
+ @pool.with_connection do |connection|
103
+ connection.drop_table table_name, if_exists: true
104
+ end
91
105
  end
92
106
 
93
107
  def table_exists?
94
- connection.schema_cache.data_source_exists?(table_name)
108
+ @pool.schema_cache.data_source_exists?(table_name)
95
109
  end
96
110
 
97
111
  private
98
- def update_or_create_entry(key, value)
99
- entry = select_entry(key)
112
+ def update_or_create_entry(connection, key, value)
113
+ entry = select_entry(connection, key)
100
114
 
101
115
  if entry
102
116
  if entry[value_key] != value
103
- update_entry(key, value)
117
+ update_entry(connection, key, value)
104
118
  else
105
119
  entry[value_key]
106
120
  end
107
121
  else
108
- create_entry(key, value)
122
+ create_entry(connection, key, value)
109
123
  end
110
124
  end
111
125
 
112
- def current_time
126
+ def current_time(connection)
113
127
  connection.default_timezone == :utc ? Time.now.utc : Time.now
114
128
  end
115
129
 
116
- def create_entry(key, value)
130
+ def create_entry(connection, key, value)
117
131
  im = Arel::InsertManager.new(arel_table)
118
132
  im.insert [
119
133
  [arel_table[primary_key], key],
120
134
  [arel_table[value_key], value],
121
- [arel_table[:created_at], current_time],
122
- [arel_table[:updated_at], current_time]
135
+ [arel_table[:created_at], current_time(connection)],
136
+ [arel_table[:updated_at], current_time(connection)]
123
137
  ]
124
138
 
125
139
  connection.insert(im, "#{self.class} Create", primary_key, key)
126
140
  end
127
141
 
128
- def update_entry(key, new_value)
142
+ def update_entry(connection, key, new_value)
129
143
  um = Arel::UpdateManager.new(arel_table)
130
144
  um.set [
131
145
  [arel_table[value_key], new_value],
132
- [arel_table[:updated_at], current_time]
146
+ [arel_table[:updated_at], current_time(connection)]
133
147
  ]
134
148
 
135
149
  um.where(arel_table[primary_key].eq(key))
@@ -137,9 +151,9 @@ module ActiveRecord
137
151
  connection.update(um, "#{self.class} Update")
138
152
  end
139
153
 
140
- def select_entry(key)
154
+ def select_entry(connection, key)
141
155
  sm = Arel::SelectManager.new(arel_table)
142
- sm.project(Arel::Nodes::SqlLiteral.new("*"))
156
+ sm.project(Arel::Nodes::SqlLiteral.new("*", retryable: true))
143
157
  sm.where(arel_table[primary_key].eq(Arel::Nodes::BindParam.new(key)))
144
158
  sm.order(arel_table[primary_key].asc)
145
159
  sm.limit = 1
@@ -182,14 +182,15 @@ module ActiveRecord
182
182
  super
183
183
  end
184
184
 
185
- def define_attribute(name, cast_type, **) # :nodoc:
186
- if lock_optimistically && name == locking_column
187
- cast_type = LockingType.new(cast_type)
185
+ private
186
+ def hook_attribute_type(name, cast_type)
187
+ if lock_optimistically && name == locking_column
188
+ cast_type = LockingType.new(cast_type)
189
+ end
190
+
191
+ super
188
192
  end
189
- super
190
- end
191
193
 
192
- private
193
194
  def inherited(base)
194
195
  super
195
196
  base.class_eval do
@@ -6,27 +6,6 @@ module ActiveRecord
6
6
 
7
7
  class_attribute :backtrace_cleaner, default: ActiveSupport::BacktraceCleaner.new
8
8
 
9
- def self.runtime=(value)
10
- ActiveRecord.deprecator.warn(<<-MSG.squish)
11
- ActiveRecord::LogSubscriber.runtime= is deprecated and will be removed in Rails 7.2.
12
- MSG
13
- ActiveRecord::RuntimeRegistry.sql_runtime = value
14
- end
15
-
16
- def self.runtime
17
- ActiveRecord.deprecator.warn(<<-MSG.squish)
18
- ActiveRecord::LogSubscriber.runtime is deprecated and will be removed in Rails 7.2.
19
- MSG
20
- ActiveRecord::RuntimeRegistry.sql_runtime
21
- end
22
-
23
- def self.reset_runtime
24
- ActiveRecord.deprecator.warn(<<-MSG.squish)
25
- ActiveRecord::LogSubscriber.reset_runtime is deprecated and will be removed in Rails 7.2.
26
- MSG
27
- ActiveRecord::RuntimeRegistry.reset
28
- end
29
-
30
9
  def strict_loading_violation(event)
31
10
  debug do
32
11
  owner = event.payload[:owner]
@@ -79,7 +79,7 @@ module ActiveRecord
79
79
  end
80
80
 
81
81
  def add_cached_associations(record, entry)
82
- record.class.reflections.each_value do |reflection|
82
+ record.class.normalized_reflections.each_value do |reflection|
83
83
  if record.association_cached?(reflection.name) && record.association(reflection.name).loaded?
84
84
  entry << reflection.name << encode(record.association(reflection.name).target)
85
85
  end
@@ -377,14 +377,13 @@ module ActiveRecord
377
377
  end
378
378
 
379
379
  # Forwards any missing method call to the \target.
380
- def method_missing(method, *args, &block)
380
+ def method_missing(method, ...)
381
381
  if delegate.respond_to?(method)
382
- delegate.public_send(method, *args, &block)
382
+ delegate.public_send(method, ...)
383
383
  else
384
384
  super
385
385
  end
386
386
  end
387
- ruby2_keywords(:method_missing)
388
387
  end
389
388
  end
390
389
  end
@@ -21,8 +21,7 @@ module ActiveRecord
21
21
  # New migration functionality that will never be backward compatible should be added directly to `ActiveRecord::Migration`.
22
22
  #
23
23
  # There are classes for each prior Rails version. Each class descends from the *next* Rails version, so:
24
- # 7.0 < 7.1
25
- # 5.2 < 6.0 < 6.1 < 7.0 < 7.1
24
+ # 5.2 < 6.0 < 6.1 < 7.0 < 7.1 < 7.2
26
25
  #
27
26
  # If you are introducing new migration functionality that should only apply from Rails 7 onward, then you should
28
27
  # find the class that immediately precedes it (6.1), and override the relevant migration methods to undo your changes.
@@ -30,7 +29,10 @@ module ActiveRecord
30
29
  # For example, Rails 6 added a default value for the `precision` option on datetime columns. So in this file, the `V5_2`
31
30
  # class sets the value of `precision` to `nil` if it's not explicitly provided. This way, the default value will not apply
32
31
  # for migrations written for 5.2, but will for migrations written for 6.0.
33
- V7_1 = Current
32
+ V7_2 = Current
33
+
34
+ class V7_1 < V7_2
35
+ end
34
36
 
35
37
  class V7_0 < V7_1
36
38
  module LegacyIndexName
@@ -6,13 +6,12 @@ module ActiveRecord
6
6
  # to the connection adapter.
7
7
  class DefaultStrategy < ExecutionStrategy # :nodoc:
8
8
  private
9
- def method_missing(method, *arguments, &block)
10
- connection.send(method, *arguments, &block)
9
+ def method_missing(method, ...)
10
+ connection.send(method, ...)
11
11
  end
12
- ruby2_keywords(:method_missing)
13
12
 
14
- def respond_to_missing?(method, *)
15
- connection.respond_to?(method) || super
13
+ def respond_to_missing?(method, include_private = false)
14
+ connection.respond_to?(method, include_private) || super
16
15
  end
17
16
 
18
17
  def connection
@@ -2,10 +2,10 @@
2
2
 
3
3
  module ActiveRecord
4
4
  class PendingMigrationConnection # :nodoc:
5
- def self.establish_temporary_connection(db_config, &block)
5
+ def self.with_temporary_pool(db_config, &block)
6
6
  pool = ActiveRecord::Base.connection_handler.establish_connection(db_config, owner_name: self)
7
7
 
8
- yield pool.connection
8
+ yield pool
9
9
  ensure
10
10
  ActiveRecord::Base.connection_handler.remove_connection_pool(self.name)
11
11
  end