-
-
Save jp/6397249 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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