Static file handler for Rails < 2.3. This handler is only provided as a convenience for developers. Performance-minded deployments should use nginx (or similar) for serving static files.
This supports page caching directly and will try to resolve a request in the following order:
If the requested exact PATH_INFO exists as a file then serve it.
If it exists at PATH_INFO+rest_operator+".html" exists then serve that.
This means that if you are using page caching it will actually work with Unicorn and you should see a decent speed boost (but not as fast as if you use a static server like nginx).
avoid allocating new strings for hash lookups
# File lib/unicorn/app/old_rails/static.rb, line 36 def call(env) # short circuit this ASAP if serving non-file methods FILE_METHODS.include?(env[REQUEST_METHOD]) or return app.call(env) # first try the path as-is path_info = env[PATH_INFO].chomp("/") if File.file?("#{root}/#{::Rack::Utils.unescape(path_info)}") # File exists as-is so serve it up env[PATH_INFO] = path_info return file_server.call(env) end # then try the cached version: path_info << ActionController::Base.page_cache_extension if File.file?("#{root}/#{::Rack::Utils.unescape(path_info)}") env[PATH_INFO] = path_info return file_server.call(env) end app.call(env) # call OldRails end
Generated with the Darkfish Rdoc Generator 2.