Module: CacheAspect
- Included in:
- ServerBase
- Defined in:
- lib/macaw_framework/aspects/cache_aspect.rb
Overview
Aspect that provide cache for the endpoints.
Instance Method Summary collapse
Instance Method Details
#call_endpoint(cache, *args, **kwargs) ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/macaw_framework/aspects/cache_aspect.rb', line 6 def call_endpoint(cache, *args, **kwargs) return super(*args, **kwargs) if cache[:cache].nil? || !cache[:endpoints_to_cache]&.include?(args[0]) cache_filtered_name = cache_name_filter(args[1], cache[:cached_methods][args[0]]) cached_response = cache[:cache].mutex.synchronize { cache[:cache].cache[cache_filtered_name]&.dig(0) } return cached_response unless cached_response.nil? response = super(*args, **kwargs) if response && should_cache_response?(response[1]) cache[:cache].mutex.synchronize do cache[:cache].cache[cache_filtered_name] = [response, Time.now] end end response end |