class Slimer::Web
The Slimer
web application on Rack Borrowed from Slidekiq: github.com/mperham/sidekiq/blob/master/lib/sidekiq/web.rb
Attributes
app_url[RW]
session_secret[RW]
sessions[RW]
sessions[W]
Public Class Methods
call(env)
click to toggle source
# File lib/slimer/web.rb, line 71 def self.call(env) @app ||= new @app.call(env) end
disable(*opts)
click to toggle source
# File lib/slimer/web.rb, line 34 def disable(*opts) opts.each { |key| set(key, false) } end
enable(*opts)
click to toggle source
# File lib/slimer/web.rb, line 30 def enable(*opts) opts.each { |key| set(key, true) } end
inherited(child)
click to toggle source
rubocop:disable Lint/MissingSuper
# File lib/slimer/web.rb, line 47 def self.inherited(child) child.app_url = app_url child.session_secret = session_secret child.redis_pool = redis_pool child.sessions = sessions end
middlewares()
click to toggle source
# File lib/slimer/web.rb, line 26 def middlewares @middlewares ||= [] end
register(extension)
click to toggle source
# File lib/slimer/web.rb, line 106 def self.register(extension) extension.registered(WebApplication) end
set(attribute, value)
click to toggle source
Helper for the Sinatra syntax: Slimer::Web.set
(:session_secret, Rails.application.secrets…)
# File lib/slimer/web.rb, line 39 def set(attribute, value) send(:"#{attribute}=", value) end
settings()
click to toggle source
# File lib/slimer/web.rb, line 22 def settings self end
Public Instance Methods
app()
click to toggle source
# File lib/slimer/web.rb, line 76 def app @app ||= build end
call(env)
click to toggle source
# File lib/slimer/web.rb, line 67 def call(env) app.call(env) end
disable(*opts)
click to toggle source
# File lib/slimer/web.rb, line 84 def disable(*opts) opts.each { |key| set(key, false) } end
enable(*opts)
click to toggle source
# File lib/slimer/web.rb, line 80 def enable(*opts) opts.each { |key| set(key, true) } end
middlewares()
click to toggle source
# File lib/slimer/web.rb, line 63 def middlewares @middlewares ||= Web.middlewares.dup end
sessions()
click to toggle source
# File lib/slimer/web.rb, line 97 def sessions unless instance_variable_defined?("@sessions") @sessions = self.class.sessions @sessions = @sessions.to_hash.dup if @sessions.respond_to?(:to_hash) end @sessions end
set(attribute, value)
click to toggle source
# File lib/slimer/web.rb, line 88 def set(attribute, value) send(:"#{attribute}=", value) end
settings()
click to toggle source
rubocop:enable Lint/MissingSuper
# File lib/slimer/web.rb, line 55 def settings self.class.settings end
use(*middleware_args, &block)
click to toggle source
# File lib/slimer/web.rb, line 59 def use(*middleware_args, &block) middlewares << [middleware_args, block] end
Private Instance Methods
build()
click to toggle source
# File lib/slimer/web.rb, line 142 def build build_sessions middlewares = self.middlewares klass = self.class ::Rack::Builder.new do middlewares.each { |middleware, block| use(*middleware, &block) } run WebApplication.new(klass) end end
build_sessions()
click to toggle source
# File lib/slimer/web.rb, line 118 def build_sessions middlewares = self.middlewares s = sessions # turn on CSRF protection if sessions are enabled and this is not the test env middlewares.unshift [[CsrfProtection], nil] if s && !using?(CsrfProtection) && ENV["RACK_ENV"] != "test" configure_cookie_middleware if s && !using?(::Rack::Session::Cookie) middlewares.unshift [[::Rack::ContentLength], nil] unless using? ::Rack::ContentLength end
using?(middleware)
click to toggle source
# File lib/slimer/web.rb, line 112 def using?(middleware) middlewares.any? do |(m, _)| m.is_a?(Array) && (m[0] == middleware || m[0].is_a?(middleware)) end end