class ActionView::CacheExpiry::Executor

Public Class Methods

new(watcher:) click to toggle source
# File lib/action_view/cache_expiry.rb, line 5
def initialize(watcher:)
  @execution_lock = Concurrent::ReentrantReadWriteLock.new
  @cache_expiry = ViewModificationWatcher.new(watcher: watcher) do
    clear_cache
  end
end

Public Instance Methods

complete(_) click to toggle source
# File lib/action_view/cache_expiry.rb, line 19
def complete(_)
  @execution_lock.release_read_lock
end
run() click to toggle source
# File lib/action_view/cache_expiry.rb, line 12
def run
  ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
    @cache_expiry.execute_if_updated
    @execution_lock.acquire_read_lock
  end
end

Private Instance Methods

clear_cache() click to toggle source
# File lib/action_view/cache_expiry.rb, line 24
def clear_cache
  @execution_lock.with_write_lock do
    ActionView::LookupContext::DetailsKey.clear
  end
end