diff options
author | eileencodes <eileencodes@gmail.com> | 2019-08-02 12:04:38 -0400 |
---|---|---|
committer | eileencodes <eileencodes@gmail.com> | 2019-08-02 12:10:32 -0400 |
commit | f2de448106ca3bb947dc88f96ca7d81d37b5be9a (patch) | |
tree | 4a12db093039c6d9546d37668a53996e80e54e61 /activerecord/lib/active_record/connection_adapters | |
parent | f3c68c59ed57302ca54f4dfad0e91dbff426962d (diff) | |
download | rails-f2de448106ca3bb947dc88f96ca7d81d37b5be9a.tar.gz rails-f2de448106ca3bb947dc88f96ca7d81d37b5be9a.tar.bz2 rails-f2de448106ca3bb947dc88f96ca7d81d37b5be9a.zip |
Add ability to unset preventing writes
Previously if an app attempts to do a write inside a read request it will be
impossilbe to switch back to writing to the primary. This PR adds an
argument to the `while_preventing_writes` so that we can make sure to
turn it off if we're doing a write on a primary.
Fixes #36830
Co-authored-by: John Crepezzi <john.crepezzi@gmail.com>
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb b/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb index 36001efdd5..276d5a25d4 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/connection_pool.rb @@ -1020,8 +1020,8 @@ module ActiveRecord # In some cases you may want to prevent writes to the database # even if you are on a database that can write. `while_preventing_writes` # will prevent writes to the database for the duration of the block. - def while_preventing_writes - original, @prevent_writes = @prevent_writes, true + def while_preventing_writes(enabled = true) + original, @prevent_writes = @prevent_writes, enabled yield ensure @prevent_writes = original |