Class: Sidekiq::WebApplication
- Inherits:
-
Object
- Object
- Sidekiq::WebApplication
show all
- Extended by:
- WebRouter
- Defined in:
- lib/sidekiq/web/application.rb
Constant Summary
collapse
- CONTENT_LENGTH =
"Content-Length".freeze
- CONTENT_TYPE =
"Content-Type".freeze
- REDIS_KEYS =
%w(redis_version uptime_in_days connected_clients used_memory_human used_memory_peak_human)
Constants included
from WebRouter
Sidekiq::WebRouter::DELETE, Sidekiq::WebRouter::GET, Sidekiq::WebRouter::HEAD, Sidekiq::WebRouter::PATCH, Sidekiq::WebRouter::PATH_INFO, Sidekiq::WebRouter::POST, Sidekiq::WebRouter::PUT, Sidekiq::WebRouter::REQUEST_METHOD, Sidekiq::WebRouter::ROUTE_PARAMS
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from WebRouter
delete, get, match, patch, post, put, route
Constructor Details
Returns a new instance of WebApplication.
11
12
13
|
# File 'lib/sidekiq/web/application.rb', line 11
def initialize(klass)
@klass = klass
end
|
Class Method Details
.after(path = nil, &block) ⇒ Object
311
312
313
|
# File 'lib/sidekiq/web/application.rb', line 311
def self.after(path=nil, &block)
afters << [path && Regexp.new("\\A#{path.gsub("*", ".*")}\\z"), block]
end
|
.afters ⇒ Object
332
333
334
|
# File 'lib/sidekiq/web/application.rb', line 332
def self.afters
@afters ||= []
end
|
.before(path = nil, &block) ⇒ Object
307
308
309
|
# File 'lib/sidekiq/web/application.rb', line 307
def self.before(path=nil, &block)
befores << [path && Regexp.new("\\A#{path.gsub("*", ".*")}\\z"), block]
end
|
.befores ⇒ Object
328
329
330
|
# File 'lib/sidekiq/web/application.rb', line 328
def self.befores
@befores ||= []
end
|
.helpers(mod = nil, &block) ⇒ Object
299
300
301
302
303
304
305
|
# File 'lib/sidekiq/web/application.rb', line 299
def self.helpers(mod=nil, &block)
if block_given?
WebAction.class_eval(&block)
else
WebAction.send(:include, mod)
end
end
|
.run_afters(app, action) ⇒ Object
319
320
321
|
# File 'lib/sidekiq/web/application.rb', line 319
def self.run_afters(app, action)
run_hooks(afters, app, action)
end
|
.run_befores(app, action) ⇒ Object
315
316
317
|
# File 'lib/sidekiq/web/application.rb', line 315
def self.run_befores(app, action)
run_hooks(befores, app, action)
end
|
.run_hooks(hooks, app, action) ⇒ Object
323
324
325
326
|
# File 'lib/sidekiq/web/application.rb', line 323
def self.run_hooks(hooks, app, action)
hooks.select { |p,_| !p || p =~ action.env[WebRouter::PATH_INFO] }.
each {|_,b| action.instance_exec(action.env, app, &b) }
end
|
.set(key, val) ⇒ Object
27
28
29
|
# File 'lib/sidekiq/web/application.rb', line 27
def self.set(key, val)
end
|
.settings ⇒ Object
19
20
21
|
# File 'lib/sidekiq/web/application.rb', line 19
def self.settings
Sidekiq::Web.settings
end
|
.tabs ⇒ Object
23
24
25
|
# File 'lib/sidekiq/web/application.rb', line 23
def self.tabs
Sidekiq::Web.tabs
end
|
Instance Method Details
#call(env) ⇒ Object
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
|
# File 'lib/sidekiq/web/application.rb', line 258
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
app = @klass
self.class.run_befores(app, action)
begin
resp = action.instance_exec env, &action.block
ensure
self.class.run_afters(app, action)
end
resp
end
resp = case resp
when Array
resp
when Integer
[resp, {}, []]
else
= case action.type
when :json
{ "Content-Type" => "application/json", "Cache-Control" => "no-cache" }
when String
{ "Content-Type" => (action.type || "text/html"), "Cache-Control" => "no-cache" }
else
{ "Content-Type" => "text/html", "Cache-Control" => "no-cache" }
end
[200, , [resp]]
end
resp[1] = resp[1].dup
resp[1][CONTENT_LENGTH] = resp[2].inject(0) { |l, p| l + p.bytesize }.to_s
resp
end
|
#settings ⇒ Object
15
16
17
|
# File 'lib/sidekiq/web/application.rb', line 15
def settings
@klass.settings
end
|