Module: SafeMemoize::Rails
- Defined in:
- lib/safe_memoize/rails.rb,
lib/safe_memoize/rails/middleware.rb,
lib/safe_memoize/rails/request_scoped.rb
Overview
Optional Rails integration. Not auto-required — add to your initializer: require "safe_memoize/rails"
Defined Under Namespace
Modules: RequestScoped Classes: Middleware
Class Method Summary collapse
-
.reset_tracked! ⇒ Object
Reset all tracked instances and clear the list.
-
.track(instance) ⇒ Object
Register an instance to have its memos reset at the end of the current request (via Middleware).
Class Method Details
.reset_tracked! ⇒ Object
Reset all tracked instances and clear the list. Called automatically by Middleware after each request. Safe to call with an empty list.
19 20 21 22 23 24 25 26 |
# File 'lib/safe_memoize/rails.rb', line 19 def self.reset_tracked! instances = Thread.current[:safe_memoize_tracked] || [] instances.each do |instance| instance.reset_all_memos if instance.respond_to?(:reset_all_memos) end ensure Thread.current[:safe_memoize_tracked] = [] end |
.track(instance) ⇒ Object
Register an instance to have its memos reset at the end of the current request (via Middleware). Thread-local; each thread maintains its own list.
13 14 15 |
# File 'lib/safe_memoize/rails.rb', line 13 def self.track(instance) (Thread.current[:safe_memoize_tracked] ||= []) << instance end |