class RailsCachedMethod::CachedProxy
Public Class Methods
new(object, key: nil, expires_in:, parent_key: nil, recache: false)
click to toggle source
# File lib/rails_cached_method.rb, line 14 def initialize(object, key: nil, expires_in:, parent_key: nil, recache: false) @__object__ = object @__key__ = key @__expires_in__ = expires_in @__recache__ = recache @__parent_key__ = parent_key @__object__ end
Public Instance Methods
__value__()
click to toggle source
# File lib/rails_cached_method.rb, line 23 def __value__ @__object__ end
method_missing(*args)
click to toggle source
# File lib/rails_cached_method.rb, line 27 def method_missing(*args) key = ___compose_key__(args) if @__recache__ #puts "deleting: #{key}" Rails.cache.delete(key) end #puts "key: #{key}, expires_in: #{@__expires_in__}, args: #{args}, recache: #{@__recache__}" Rails.cache.fetch(key, expires_in: @__expires_in__) do CachedProxy.new( @__object__.send(*args), expires_in: @__expires_in__, recache: @__recache__, parent_key: key, ) end end
Private Instance Methods
___compose_key__(args)
click to toggle source
# File lib/rails_cached_method.rb, line 45 def ___compose_key__(args) result = [@__parent_key__, @__key__] result += if @__object__.respond_to?(:to_global_id) [@__object__.to_global_id] elsif @__object__.is_a?(ActiveRecord::Relation) [@__object__.class] else [@__object__] end result += args[0..1] result.compact.map(&:to_s).join('.').dasherize end