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

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