Skip to content

Instantly share code, notes, and snippets.

@thomasmaas
Forked from parndt/gist:1011435
Created June 7, 2011 20:39
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save thomasmaas/1013101 to your computer and use it in GitHub Desktop.
Save thomasmaas/1013101 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