Class: Sidekiq::Web::Application
- Inherits:
-
Object
- Object
- Sidekiq::Web::Application
- Extended by:
- Router
- Includes:
- Router
- Defined in:
- lib/sidekiq/web/application.rb
Constant Summary collapse
- REDIS_KEYS =
%w[redis_version uptime_in_days connected_clients used_memory_human used_memory_peak_human]
- CSP_HEADER_TEMPLATE =
[ "default-src 'self' https: http:", "child-src 'self'", "connect-src 'self' https: http: wss: ws:", "font-src 'none'", "frame-src 'self'", "img-src 'self' https: http: data:", "manifest-src 'self'", "media-src 'self'", "object-src 'none'", "script-src 'self' 'nonce-!placeholder!'", "style-src 'self' 'nonce-!placeholder!'", "worker-src 'self'", "base-uri 'self'" ].join("; ").freeze
- METRICS_PERIODS =
{ "1h" => {minutes: 60}, "2h" => {minutes: 120}, "4h" => {minutes: 240}, "8h" => {minutes: 480}, "24h" => {hours: 24}, "48h" => {hours: 48}, "72h" => {hours: 72} }
- QUEUE_NAME =
/\A[a-z_:.\-0-9]+\z/i
Class Method Summary collapse
-
.helpers(mod) ⇒ Object
Used by extensions to add helper methods accessible to any defined endpoints in Application.
Instance Method Summary collapse
- #call(env) ⇒ Object
-
#initialize(inst) ⇒ Application
constructor
A new instance of Application.
- #process_csp(env, input) ⇒ Object
- #redis ⇒ Object
Methods included from Router
delete, get, head, match, patch, post, put, route, route_cache
Constructor Details
#initialize(inst) ⇒ Application
Returns a new instance of Application.
40 41 42 |
# File 'lib/sidekiq/web/application.rb', line 40 def initialize(inst) @app = inst end |
Class Method Details
.helpers(mod) ⇒ Object
Used by extensions to add helper methods accessible to any defined endpoints in Application. Careful with generic method naming as there’s no namespacing so collisions are possible.
473 474 475 |
# File 'lib/sidekiq/web/application.rb', line 473 def self.helpers(mod) Sidekiq::Web::Action.send(:include, mod) end |
Instance Method Details
#call(env) ⇒ Object
435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 |
# File 'lib/sidekiq/web/application.rb', line 435 def call(env) action = match(env) return [404, {"content-type" => "text/plain", "x-cascade" => "pass"}, ["Not Found"]] unless action headers = { "content-type" => "text/html", "cache-control" => "private, no-store", "content-language" => action.locale, "content-security-policy" => process_csp(env, CSP_HEADER_TEMPLATE), "x-content-type-options" => "nosniff" } env["response_headers"] = headers resp = catch(:halt) do Thread.current[:sidekiq_redis_pool] = env[:redis_pool] action.instance_exec env, &action.block ensure Thread.current[:sidekiq_redis_pool] = nil end case resp when Array # redirects go here resp else # rendered content goes here # we'll let Rack calculate Content-Length for us. [200, env["response_headers"], [resp]] end end |
#process_csp(env, input) ⇒ Object
465 466 467 |
# File 'lib/sidekiq/web/application.rb', line 465 def process_csp(env, input) input.gsub("!placeholder!", env[:csp_nonce]) end |
#redis ⇒ Object
431 432 433 |
# File 'lib/sidekiq/web/application.rb', line 431 def redis(&) Thread.current[:sidekiq_redis_pool].with(&) end |