Class: Insight::App

Inherits:
Object
  • Object
show all
Includes:
Options
Defined in:
lib/insight/app.rb

Defined Under Namespace

Classes: SecurityError

Constant Summary collapse

INSIGHT_ROOT =
"/__insight__"
INSIGHT_REGEX =
%r{^#{INSIGHT_ROOT}}
VERSION =
"0.4.4"

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Options

#options, #options=, #set

Constructor Details

#initialize(app, options = {}, &block) ⇒ App

Returns a new instance of App.



32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/insight/app.rb', line 32

def initialize(app, options = {}, &block)
  initialize_options options
  @base_app = app
  @panels = []
  instance_eval(&block) if block_given?

  @logger = Logger.new(read_option(:log_level), read_option(:log_path))
  Thread.current['insight.logger'] = @logger
  build_normal_stack
  build_debug_stack
  if options[:on_initialize]
    options[:on_initialize].call(self)
  end
end

Instance Attribute Details

#loggerObject (readonly)

Returns the value of attribute logger.



46
47
48
# File 'lib/insight/app.rb', line 46

def logger
  @logger
end

#panelsObject

Returns the value of attribute panels.



47
48
49
# File 'lib/insight/app.rb', line 47

def panels
  @panels
end

Instance Method Details

#call(env) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/insight/app.rb', line 49

def call(env)
  @original_request = Rack::Request.new(env)
  if insight_active?
    @env = env
    self.options = @default_options

    env['insight.logger'] = @logger
    Thread.current['insight.logger'] = @logger

    Insight.enable
    env["insight.panels"] = []
    @debug_stack.call(env)
  else
    @normal_stack.call(env)
  end
end

#reset(new_options = nil) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/insight/app.rb', line 67

def reset(new_options=nil)
  @env = nil
  initialize_options(new_options)

  Insight::Instrumentation::ClassProbe::all_probes.each do |probe|
    probe.clear_collectors
  end
  Insight::Instrumentation::InstanceProbe::all_probes.each do |probe|
    probe.clear_collectors
  end
  Insight::Instrumentation::PackageDefinition.clear_collectors

  build_debug_stack
end