I am using Mongrel::DirHandler to manage response headers for static files - this is effective on my small dev machine. My production machine uses Passenger so my headers aren't getting set. How do you control headers for static files when utilizing Passenger?

snippet from my atmosphere.rb:

if defined? Mongrel::DirHandler
  module Mongrel
    class DirHandler
      def send_file_with_expires(req_path, request, response, header_only=false)

        if req_path =~ /((\/images)|javascripts|stylesheets)/
          response.header['Cache-Control'] = 'max-age=315360000'
          response.header['Expires'] = (Time.now + 10.years).rfc2822
          response.header["Last-Modified"] = Time.now.httpdate
          response.header["Expires"] = 0
          # HTTP 1.0
          response.header["Pragma"] = 'no-cache'
          # HTTP 1.1 ‘pre-check=0, post-check=0′ (IE specific)
          response.header["Cache-Control"] = 'no-store, no-cache, must-revalidate, max-age=0, pre-check=0, post-check=0'

        send_file_without_expires(req_path, request, response, header_only)
      alias_method :send_file_without_expires, :send_file
      alias_method :send_file, :send_file_with_expires

Since you are using Passenger, I suppose you are under apache, so that your request is not dealing with Mongrel any longer. If that's the case, you are able to establish rules around the .htaccess file within the public directory of the application.

Here's an explination regarding how to get it done.