aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support
diff options
context:
space:
mode:
authorRosa Gutierrez <rosa.ge@gmail.com>2019-01-27 11:18:40 +0100
committerRosa Gutierrez <rosa.ge@gmail.com>2019-01-30 16:10:06 +0100
commit2ce8455cc994c788a44f5b414769cb2dbee4577d (patch)
tree1af0eea2ab1f1db2200ea21cd70f9d7fe330ceab /activesupport/lib/active_support
parent9bb07b79e4bd855f24c098ba636dae15340e03ed (diff)
downloadrails-2ce8455cc994c788a44f5b414769cb2dbee4577d.tar.gz
rails-2ce8455cc994c788a44f5b414769cb2dbee4577d.tar.bz2
rails-2ce8455cc994c788a44f5b414769cb2dbee4577d.zip
Support before_reset callback in CurrentAttributes
This is useful when we need to do some work associated to `Current.reset` but that work depends on the values of the current attributes themselves. This cannot be done in the supported `resets` callback because when the block is executed, CurrentAttributes's instance has already been reset. For symmetry, `after_reset` is defined as alias of `resets`.
Diffstat (limited to 'activesupport/lib/active_support')
-rw-r--r--activesupport/lib/active_support/current_attributes.rb6
1 files changed, 6 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/current_attributes.rb b/activesupport/lib/active_support/current_attributes.rb
index 3145ff87a1..67ebe102d7 100644
--- a/activesupport/lib/active_support/current_attributes.rb
+++ b/activesupport/lib/active_support/current_attributes.rb
@@ -119,10 +119,16 @@ module ActiveSupport
end
end
+ # Calls this block before #reset is called on the instance. Used for resetting external collaborators that depend on current values.
+ def before_reset(&block)
+ set_callback :reset, :before, &block
+ end
+
# Calls this block after #reset is called on the instance. Used for resetting external collaborators, like Time.zone.
def resets(&block)
set_callback :reset, :after, &block
end
+ alias_method :after_reset, :resets
delegate :set, :reset, to: :instance