Class: Rack::MiniProfiler::PageTimerStruct

Inherits:
TimerStruct
  • Object
show all
Defined in:
lib/mini_profiler/page_timer_struct.rb

Overview

PageTimerStruct

Root: RequestTimer
  :has_many RequestTimer children
  :has_many SqlTimer children
  :has_many CustomTimer children

Instance Method Summary collapse

Methods inherited from TimerStruct

#[], #[]=, #attributes

Constructor Details

#initialize(env) ⇒ PageTimerStruct

Returns a new instance of PageTimerStruct.



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/mini_profiler/page_timer_struct.rb', line 12

def initialize(env)
  super("Id" => MiniProfiler.generate_id,
        "Name" => env['PATH_INFO'],
        "Started" => (Time.now.to_f * 1000).to_i,
        "MachineName" => env['SERVER_NAME'],
        "Level" => 0,
        "User" => "unknown user",
        "HasUserViewed" => false,
        "ClientTimings" => nil,
        "DurationMilliseconds" => 0,
        "HasTrivialTimings" => true,
        "HasAllTrivialTimigs" => false,
        "TrivialDurationThresholdMilliseconds" => 2,
        "Head" => nil,
        "DurationMillisecondsInSql" => 0,
        "HasSqlTimings" => true,
        "HasDuplicateSqlTimings" => false,
        "ExecutedReaders" => 0,
        "ExecutedScalars" => 0,
        "ExecutedNonQueries" => 0,
        "CustomTimingNames" => [],
        "CustomTimingStats" => {}
       )
  name = "#{env['REQUEST_METHOD']} http://#{env['SERVER_NAME']}:#{env['SERVER_PORT']}#{env['SCRIPT_NAME']}#{env['PATH_INFO']}"
  self['Root'] = RequestTimerStruct.createRoot(name, self)
end

Instance Method Details

#duration_msObject



39
40
41
# File 'lib/mini_profiler/page_timer_struct.rb', line 39

def duration_ms
  @attributes['Root']['DurationMilliseconds']
end

#rootObject



43
44
45
# File 'lib/mini_profiler/page_timer_struct.rb', line 43

def root
  @attributes['Root']
end

#to_json(*a) ⇒ Object



47
48
49
50
51
52
53
54
# File 'lib/mini_profiler/page_timer_struct.rb', line 47

def to_json(*a)
  attribs = @attributes.merge(
    "Started" => '/Date(%d)/' % @attributes['Started'],
    "DurationMilliseconds" => @attributes['Root']['DurationMilliseconds'],
    "CustomTimingNames" => @attributes['CustomTimingStats'].keys.sort
  )
  ::JSON.generate(attribs, :max_nesting => 100)
end