class InstallerController < ApplicationController # Rails controller action for an HTML5 cache manifest file. # Generates a plain text list of files that changes # when one of the listed files change... # So the client knows when to refresh its cache. def cache_manifest @files = ["CACHE MANIFEST\n"] @files << 'favicon.ico' @files << './client/sencha/ext-touch.js' @files << './client/sencha/resources/css/apple.css' add_from('./client/views/','*.html') add_from('./client/javascripts/','*.js') add_from('./client/stylesheets/','*.css') add_from('./client/images/','*.png') @files << "\nNETWORK:" @files << '*' digest = Digest::SHA1.new @files.each do |f| actual_file = File.join(Rails.root,'public',f) digest << "##{File.mtime(actual_file)}" if File.exist?(actual_file) end @files << "\n# Modification Digest: #{digest.hexdigest}" render :text => @files.join("\n"), :content_type => 'text/cache-manifest', :layout => nil end protected def add_from(loc,match) Dir.glob(File.join(Rails.root,'public',loc, match)) do |file| @files << "#{loc}#{File.basename(file)}" end end end