Skip to content

Instantly share code, notes, and snippets.

@ahoward
Forked from thomasmaas/gist:1013101
Created August 29, 2012 17:08
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 ahoward/3515714 to your computer and use it in GitHub Desktop.
Save ahoward/3515714 to your computer and use it in GitHub Desktop.
How to cache pages and clear them in Refinery CMS
# put in config/application.rb
config.to_prepare do
::PagesController.module_eval do
caches_page :show, :unless => proc {|c| c.user_signed_in? || c.flash.any? }
caches_page :home, :unless => proc {|c| c.user_signed_in? || c.flash.any? }
end
::Page.module_eval do
after_save :clear_static_caching!
after_destroy :clear_static_caching!
def clear_static_caching!
Page.all.map(&:url).map{|u|
[(u if u.is_a?(String)), (u[:path] if u.respond_to?(:keys))].compact
}.flatten.map{ |u| [(u.split('/').last || 'index'), 'html'].join('.')}.each do |page|
if (static_file = Rails.root.join('public', page)).file?
$stdout.puts "Clearing cached page #{static_file.split.last}"
static_file.delete
end
end
end
protected :clear_static_caching!
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment