class Slimer::WebApplication
Defines routes and responses for the Slimer
web app.
Constants
- CONTENT_LENGTH
- CSP_HEADER
- REDIS_KEYS
Public Class Methods
helpers(mod = nil, &block)
click to toggle source
# File lib/slimer/web/application.rb, line 111 def self.helpers(mod = nil, &block) if block WebAction.class_eval(&block) else WebAction.send(:include, mod) end end
new(klass)
click to toggle source
# File lib/slimer/web/application.rb, line 26 def initialize(klass) @klass = klass end
settings()
click to toggle source
# File lib/slimer/web/application.rb, line 34 def self.settings Slimer::Web.settings end
Public Instance Methods
call(env)
click to toggle source
# File lib/slimer/web/application.rb, line 86 def call(env) action = self.class.match(env) return [404, { "Content-Type" => "text/plain", "X-Cascade" => "pass" }, ["Not Found"]] unless action resp = catch(:halt) do action.instance_exec env, &action.block end resolve_response(resp) end
resolve_response(resp)
click to toggle source
# File lib/slimer/web/application.rb, line 97 def resolve_response(resp) return resp if resp.is_a?(Array) # rendered content goes here headers = { "Content-Type" => "text/html", "Cache-Control" => "no-cache", "Content-Language" => "en", "Content-Security-Policy" => CSP_HEADER } # we'll let Rack calculate Content-Length for us. [200, headers, [resp]] end
root_path()
click to toggle source
# File lib/slimer/web/application.rb, line 38 def root_path "#{env["SCRIPT_NAME"]}/" end
settings()
click to toggle source
# File lib/slimer/web/application.rb, line 30 def settings @klass.settings end