Class: Rusen::Middleware::RusenRack

Inherits:
Object
  • Object
show all
Defined in:
lib/rusen/middleware/rusen_rack.rb

Instance Method Summary collapse

Constructor Details

#initialize(app, settings = {}) ⇒ RusenRack

Returns a new instance of RusenRack.



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/rusen/middleware/rusen_rack.rb', line 10

def initialize(app, settings = {})
  @app = app

  if settings.is_a?(::Rusen::Settings)
    @rusen_settings = settings
  else
    @rusen_settings = Settings.new

    @rusen_settings.outputs = settings[:outputs]
    @rusen_settings.sections = settings[:sections]
    @rusen_settings.filter_parameters = settings[:filter_parameters]
    @rusen_settings.email_prefix = settings[:email_prefix]
    @rusen_settings.sender_address = settings[:sender_address]
    @rusen_settings.exception_recipients = settings[:exception_recipients]
    @rusen_settings.smtp_settings = settings[:smtp_settings]
    @rusen_settings.exclude_if = settings[:exclude_if]
  end

  @notifier = Notifier.new(@rusen_settings)
end

Instance Method Details

#call(env) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/rusen/middleware/rusen_rack.rb', line 31

def call(env)
  begin
    @app.call(env)
  rescue Exception => error
    unless @rusen_settings.exclude_if.call(error)
      request = Rack::Request.new(env)
      @notifier.notify(error, request.GET.merge(request.POST), env, request.session)
    end

    raise
  end
end