Sha256: 2f65ea320f2e5f86b93e270ff399db62b1975a0062ee29ecda14e1744f655c65
Contents?: true
Size: 1.13 KB
Versions: 37
Compression:
Stored size: 1.13 KB
Contents
# frozen_string_literal: true module ActionView class CacheExpiry class Executor def initialize(watcher:) @cache_expiry = CacheExpiry.new(watcher: watcher) end def before(target) @cache_expiry.clear_cache_if_necessary end end def initialize(watcher:) @watched_dirs = nil @watcher_class = watcher @watcher = nil @mutex = Mutex.new end def clear_cache_if_necessary @mutex.synchronize do watched_dirs = dirs_to_watch return if watched_dirs.empty? if watched_dirs != @watched_dirs @watched_dirs = watched_dirs @watcher = @watcher_class.new([], watched_dirs) do clear_cache end @watcher.execute else @watcher.execute_if_updated end end end def clear_cache ActionView::LookupContext::DetailsKey.clear end private def dirs_to_watch all_view_paths.grep(FileSystemResolver).map!(&:path).tap(&:uniq!).sort! end def all_view_paths ActionView::ViewPaths.all_view_paths.flat_map(&:paths) end end end
Version data entries
37 entries across 37 versions & 4 rubygems