class Sidekiq::Web

Constants

ASSETS
DEFAULT_TABS
LAYOUT
LOCALES
ROOT
VIEWS

Attributes

app_url[RW]
locales[W]
redis_pool[RW]
session_secret[RW]
sessions[RW]
views[W]
sessions[W]

Public Class Methods

call(env) click to toggle source
# File lib/sidekiq/web.rb, line 105
def self.call(env)
  @app ||= new
  @app.call(env)
end
custom_tabs() click to toggle source
# File lib/sidekiq/web.rb, line 52
def custom_tabs
  @custom_tabs ||= {}
end
Also aliased as: tabs
default_tabs() click to toggle source
# File lib/sidekiq/web.rb, line 48
def default_tabs
  DEFAULT_TABS
end
disable(*opts) click to toggle source
# File lib/sidekiq/web.rb, line 69
def disable(*opts)
  opts.each {|key| set(key, false) }
end
enable(*opts) click to toggle source
# File lib/sidekiq/web.rb, line 65
def enable(*opts)
  opts.each {|key| set(key, true) }
end
inherited(child) click to toggle source
# File lib/sidekiq/web.rb, line 82
def self.inherited(child)
  child.app_url = self.app_url
  child.session_secret = self.session_secret
  child.redis_pool = self.redis_pool
  child.sessions = self.sessions
end
locales() click to toggle source
# File lib/sidekiq/web.rb, line 57
def locales
  @locales ||= LOCALES
end
middlewares() click to toggle source
# File lib/sidekiq/web.rb, line 40
def middlewares
  @middlewares ||= []
end
register(extension) click to toggle source
# File lib/sidekiq/web.rb, line 140
def self.register(extension)
  extension.registered(WebApplication)
end
set(attribute, value) click to toggle source

Helper for the Sinatra syntax: ::set(:session_secret, Rails.application.secrets…)

# File lib/sidekiq/web.rb, line 74
def set(attribute, value)
  send(:"#{attribute}=", value)
end
settings() click to toggle source
# File lib/sidekiq/web.rb, line 36
def settings
  self
end
tabs()
Alias for: custom_tabs
use(*middleware_args, &block) click to toggle source
# File lib/sidekiq/web.rb, line 44
def use(*middleware_args, &block)
  middlewares << [middleware_args, block]
end
views() click to toggle source
# File lib/sidekiq/web.rb, line 61
def views
  @views ||= VIEWS
end

Public Instance Methods

app() click to toggle source
# File lib/sidekiq/web.rb, line 110
def app
  @app ||= build
end
call(env) click to toggle source
# File lib/sidekiq/web.rb, line 101
def call(env)
  app.call(env)
end
disable(*opts) click to toggle source
# File lib/sidekiq/web.rb, line 118
def disable(*opts)
  opts.each {|key| set(key, false) }
end
enable(*opts) click to toggle source
# File lib/sidekiq/web.rb, line 114
def enable(*opts)
  opts.each {|key| set(key, true) }
end
middlewares() click to toggle source
# File lib/sidekiq/web.rb, line 97
def middlewares
  @middlewares ||= Web.middlewares.dup
end
sessions() click to toggle source
# File lib/sidekiq/web.rb, line 131
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/sidekiq/web.rb, line 122
def set(attribute, value)
  send(:"#{attribute}=", value)
end
settings() click to toggle source
# File lib/sidekiq/web.rb, line 89
def settings
  self.class.settings
end
use(*middleware_args, &block) click to toggle source
# File lib/sidekiq/web.rb, line 93
def use(*middleware_args, &block)
  middlewares << [middleware_args, block]
end

Private Instance Methods

build() click to toggle source
# File lib/sidekiq/web.rb, line 175
def build
  build_sessions

  middlewares = self.middlewares
  klass = self.class

  ::Rack::Builder.new do
    %w(stylesheets javascripts images).each do |asset_dir|
      map "/#{asset_dir}" do
        run ::Rack::File.new("#{ASSETS}/#{asset_dir}", { 'Cache-Control' => 'public, max-age=86400' })
      end
    end

    middlewares.each {|middleware, block| use(*middleware, &block) }

    run WebApplication.new(klass)
  end
end
build_sessions() click to toggle source
# File lib/sidekiq/web.rb, line 152
def build_sessions
  middlewares = self.middlewares

  unless using?(::Rack::Protection) || ENV['RACK_ENV'] == 'test'
    middlewares.unshift [[::Rack::Protection, { use: :authenticity_token }], nil]
  end

  s = sessions
  return unless s

  unless using? ::Rack::Session::Cookie
    unless secret = Web.session_secret
      require 'securerandom'
      secret = SecureRandom.hex(64)
    end

    options = { secret: secret }
    options = options.merge(s.to_hash) if s.respond_to? :to_hash

    middlewares.unshift [[::Rack::Session::Cookie, options], nil]
  end
end
using?(middleware) click to toggle source
# File lib/sidekiq/web.rb, line 146
def using?(middleware)
  middlewares.any? do |(m,_)|
    m.kind_of?(Array) && (m[0] == middleware || m[0].kind_of?(middleware))
  end
end