Skip to content

Instantly share code, notes, and snippets.

@jp
Forked from JangoSteve/cache.rake
Created August 31, 2013 09:44
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 jp/6397249 to your computer and use it in GitHub Desktop.
Save jp/6397249 to your computer and use it in GitHub Desktop.
# See rails source:
# https://github.com/rails/rails/blob/master/actionpack/lib/action_controller/caching/pages.rb
#
# Turn on caching in development, by changing this line to true in config/environments/development.rb:
#
# config.action_controller.perform_caching = true
#
# Then run:
#
# bundle exec rake pages:cache
#
# All cached pages will be in /public/path_name/xxxx.html
namespace :pages do
desc "Cache ALL the pages!"
task :cache => :environment do
# First, let's instantiate a new session so we can `get` our paths,
# just like if we were writing an integration test
app = ActionDispatch::Integration::Session.new(Rails.application)
# Now, we'll loop through each path we want to cache
%w( /index /about /contact /products /products/cool_thing /products/other_cool_thing ).each do |path|
# Get the path
app.get path
# Let's figure out the file path/name to which we're saving the file
file_path = "/cache/#{path.gsub('/', '_')[1,path.length]}"
# And now let's cache the response body HTML, using the ActionController's
ApplicationController.cache_page(app.response.body, file_path)
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment