class BridgetownPluginNano::Middleware::Static
Based on Rack::TryStatic middleware github.com/rack/rack-contrib/blob/master/lib/rack/contrib/try_static.rb
Public Class Methods
new(app, options)
click to toggle source
# File lib/bridgetown-plugin-nano/rack_middleware/static.rb, line 9 def initialize(app, options) @app = app @try = ["", ".html", "index.html", "/index.html", *options[:try]] @static = Rack::Static.new( ->(_) { [404, {}, []] }, options ) end
Public Instance Methods
call(env)
click to toggle source
# File lib/bridgetown-plugin-nano/rack_middleware/static.rb, line 18 def call(env) orig_path = env["PATH_INFO"] found = nil @try.each do |path| resp = @static.call(env.merge!({ "PATH_INFO" => orig_path + path })) break if !(403..405).cover?(resp[0]) && (found = resp) end found || @app.call(env.merge!("PATH_INFO" => orig_path)) end