require ‘fileutils’
# Use the Asset Pipeline to generate static error pages. # For example, /app/assets/html/404.html.erb will be compiled to /public/404.html
Rake::Task.enhance do
Rake::Task['assets:precompile:error_pages'].invoke
end
Rake::Task.enhance [‘assets:clobber:error_pages’]
namespace :assets do
def log msg # try to log like Sprockets even though their stuff is all private STDERR.puts msg Rails.logger.info(msg) if Rails.respond_to?(:logger) && Rails.logger end def process_error_files pattern = Rails.root.join('public', 'assets', "[0-9][0-9][0-9]*.html") groups = Dir[pattern].group_by { |s| File.basename(s)[0..2] } groups.sort_by { |base,_| base }.each do |base, group| src = group.sort_by { |f| File.mtime(f) }.last dst = Rails.root.join('public', "#{base}.html") yield src, dst end end namespace :precompile do desc 'Copy the newest error page assets into /public' task :error_pages do process_error_files do |src,dst| log "copy #{src} to #{dst}" FileUtils.cp src, dst end end end namespace :clobber do desc 'Remove the error page assets in /public' task :error_pages do process_error_files do |src,dst| log "clobber #{dst}" FileUtils.rm_f dst end end end
end