Skip to content

Instantly share code, notes, and snippets.

@richseviora
Created February 1, 2018 01:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save richseviora/1066660016d7f5795ef6646820e96d72 to your computer and use it in GitHub Desktop.
Save richseviora/1066660016d7f5795ef6646820e96d72 to your computer and use it in GitHub Desktop.
Rails Cache Digest Rake Task
namespace :cache_digests do
desc 'Resolves digest for file'
task :digest => :environment do
abort 'You must provide TEMPLATE for the task to run' unless ENV['TEMPLATE'].present?
template_name = CacheDigests.template_name
finder = CacheDigests.finder
puts "Finder Contents: #{finder.digest_cache.keys}"
tree = ActionView::Digestor.tree(template_name, finder, false)
puts "Locating Digest for '#{template_name}'"
digest = ActionView::Digestor.digest(name: template_name, finder: finder, dependencies: [])
puts "digest: #{digest}"
puts "dependency_digest: #{tree.dependency_digest(finder, [])}"
puts "dependency_map:"
puts JSON.pretty_generate(tree.get_map(finder, []))
end
class CacheDigests
def self.template_name
ENV['TEMPLATE'].split('.', 2).first
end
def self.finder
ApplicationController.new.lookup_context
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment