class Rack::StaticIfPresent
Public Class Methods
new(app, options={})
click to toggle source
# File lib/rack-static-if-present.rb, line 3 def initialize(app, options={}) @app = app options = options.dup @urls = options.delete(:urls) || ["/favicon.ico"] root = options.delete(:root) || Dir.pwd new_options = options.inject({}) do |recased_opts, (k,v)| new_key = k.to_s.split("_").collect(&:capitalize).join("-") recased_opts[new_key] = v recased_opts end @file_server = Rack::File.new(root, new_options) end
Public Instance Methods
call(env)
click to toggle source
# File lib/rack-static-if-present.rb, line 16 def call(env) path = env["PATH_INFO"] unless @urls.kind_of? Hash can_serve = @urls.any? { |url| path.index(url) == 0 } else can_serve = @urls.key? path end if can_serve env["PATH_INFO"] = @urls[path] if @urls.kind_of? Hash file = @file_server.call(env) return file if file[0] == 200 end @app.call(env) end