rack-webprofiler 0.1.0.pre.beta2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (38) hide show
  1. checksums.yaml +5 -13
  2. data/CHANGELOG.md +36 -12
  3. data/README.md +16 -12
  4. data/docs/DSL.md +152 -0
  5. data/docs/GettingStarted.md +51 -0
  6. data/docs/README.md +6 -0
  7. data/lib/rack/templates/assets/css/profiler.css +1 -1
  8. data/lib/rack/templates/assets/css/rwpt.css +1 -1
  9. data/lib/rack/templates/assets/sass/_variables.scss +21 -2
  10. data/lib/rack/templates/assets/sass/profiler.scss +73 -61
  11. data/lib/rack/templates/assets/sass/rwpt.scss +2 -2
  12. data/lib/rack/templates/panel/show.erb +4 -4
  13. data/lib/rack/templates/profiler.erb +4 -0
  14. data/lib/rack/web_profiler/collector.rb +197 -125
  15. data/lib/rack/web_profiler/collectors/rack_collector.rb +74 -0
  16. data/lib/rack/web_profiler/{collector/rack → collectors}/request_collector.rb +43 -60
  17. data/lib/rack/web_profiler/{collector → collectors}/ruby_collector.rb +4 -3
  18. data/lib/rack/web_profiler/{collector → collectors}/time_collector.rb +12 -6
  19. data/lib/rack/web_profiler/collectors.rb +21 -27
  20. data/lib/rack/web_profiler/config.rb +4 -9
  21. data/lib/rack/web_profiler/controller.rb +131 -126
  22. data/lib/rack/web_profiler/engine.rb +10 -14
  23. data/lib/rack/web_profiler/model.rb +74 -23
  24. data/lib/rack/web_profiler/request.rb +22 -7
  25. data/lib/rack/web_profiler/response.rb +27 -0
  26. data/lib/rack/web_profiler/rouge/html_formatter.rb +25 -0
  27. data/lib/rack/web_profiler/router.rb +11 -6
  28. data/lib/rack/web_profiler/version.rb +1 -1
  29. data/lib/rack/web_profiler/view.rb +255 -139
  30. data/lib/rack/web_profiler.rb +47 -4
  31. data/rack-webprofiler.gemspec +1 -3
  32. metadata +32 -32
  33. data/lib/rack/web_profiler/collector/debug_collector.rb +0 -31
  34. data/lib/rack/web_profiler/collector/erb_collector.rb +0 -0
  35. data/lib/rack/web_profiler/collector/performance_collector.rb +0 -1
  36. data/lib/rack/web_profiler/collector/rack/rack_collector.rb +0 -23
  37. data/lib/rack/web_profiler/collector/view.rb +0 -44
  38. data/lib/rack/web_profiler/model/collection_record.rb +0 -46
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- NzE0ZmJhYzk5Yjc0YzM0OTIxZjIzYzUzNjE4NzA1MzYwMDYyNzNkZQ==
5
- data.tar.gz: !binary |-
6
- MTUxNjM4MTQ2YmM4YTU2N2Y2ODZhNTg2ZDg2NmE3NjlkN2FjNjVkZg==
2
+ SHA1:
3
+ metadata.gz: 391fd545b686fee4c24da79c5de737d89f82f9a3
4
+ data.tar.gz: 753982446366d82875aa09788bd8312815d36304
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- N2M4MDYyNDFhOTJiMzNjNmQ3NjFiNDE0ZmQyODViNmViZTdlZWYzYjdmNTZl
10
- NzcwMjE4NjI1ODBkOTg4OGViZDA4NGViYmY1NzI0ZjBlZTQ4NjRkM2VlZmE2
11
- MjJjYjk0OWVhOTg0ZWY0ZGQ4NTZjZjcwYmU1ZGUyMGJhZjMxYWI=
12
- data.tar.gz: !binary |-
13
- YjczODk2M2M3Y2RmNThiZDdjNWNiNjVkYzJlYWI0MjMzMWU2MmE3YmNiYWNk
14
- NWNmODFmNmIwNWQ1ODBiNjExMWQ2YjQxYzA2ZDk3YzQ3Yjg0NTcxNmQ2ZDU0
15
- MmVhM2U2ZmMzYjY1NTgxZmYyMmQyMmIwOTNhYTk3ZDMxZmFhNzg=
6
+ metadata.gz: 815e901f2c22b04a836c273ff5ef17dd3df2f5fd3dfb0446f9ca3dc7c2115972dc0d719626a67a7c89bf93ea8a824ca6de050383e342ffc0344af00ae3ef2b07
7
+ data.tar.gz: c5a8603c675dad679b66f1389ff89395232e69a132adcb7652da2e1544eaa6e36f582cf9f974aa033960db15aac11918a57cfb2f097599adbae7fddabe8a53bb
data/CHANGELOG.md CHANGED
@@ -7,26 +7,50 @@
7
7
  * Create a collector to show informations about CPU usage.
8
8
  * Create a collector to list all `.inspect` method calls.
9
9
  * Create a collector to list the HTTP calls.
10
- * Create a collector for Devise gem.
11
- * Create a collector for ActiveRecord.
12
- * Create a collector for Sequel.
13
- * Create a collector for SQL requests without ActiveRecord.
14
- * Create a collector to show the Rails logger informations.
15
- * Create a collector to list jobs created with ActiveJob.
16
10
  * Create a collector to list the ajax requests.
17
- * Have a friendly UI.
18
11
  * Catch 500 or exceptions.
19
12
 
20
13
 
21
- ## v0.2.0
14
+
15
+
16
+ ## v0.1.0 (WIP)
22
17
 
23
18
  ### Features
24
19
 
25
- * Create a Rails request collector.
26
- * Create a collector to show which Rails version it is used and the current environment.
20
+ * Separate DSL `collector_name` in `identifier` and `name` methods.
21
+ * Start optimizing css.
22
+ * Improve documentation and code comments.
23
+ * Move collectors into collectors folder instead collector.
24
+ * Cleanup files.
25
+ * Improve tests.
27
26
 
27
+ ### Fixes
28
28
 
29
- ## v0.1.0 (WIP)
29
+ * Debug SQLite database stabilty by using a single thread.
30
+
31
+
32
+ ## v0.1.0.beta2
33
+
34
+ ### Features
35
+
36
+ * Create a view class to manage template and create helpers. And
37
+ cleanup all views.
38
+ * Remove Sinatra and Rails linked elements (now in separate gems).
39
+ * Improve stability.
40
+
41
+
42
+ ## v0.1.0.beta1
43
+
44
+ ### Features
45
+
46
+ * Friendly UI.
47
+ * Improve development environment.
48
+ * Complete collectors.
49
+ * Serve toolbar assets dynamically.
50
+ * Improve tests.
51
+
52
+
53
+ ## v0.1.0.pre.alpha1
30
54
 
31
55
  ### Features
32
56
 
@@ -36,4 +60,4 @@
36
60
  * Create a execution time collector.
37
61
  * Create a collector to show which version of ruby it is used.
38
62
  * Create a collector to show the Rack request informations.
39
- * Create a collector to show the Sinatra request informations.
63
+ * Create a collector to show which Rack version is used and the current environment.
data/README.md CHANGED
@@ -3,15 +3,15 @@
3
3
  A Rack profiler for web application.
4
4
 
5
5
  [![Version ](http://img.shields.io/gem/v/rack-webprofiler.svg) ](https://rubygems.org/gems/rack-webprofiler)
6
- [![Travis CI ](http://img.shields.io/travis/nicolas-brousse/rack-webprofiler/master.svg) ](https://travis-ci.org/nicolas-brousse/rack-webprofiler)
7
- [![Gitter ](https://img.shields.io/gitter/room/nicolas-brousse/rack-webprofiler.svg) ](https://gitter.im/nicolas-brousse/rack-webprofiler)
6
+ [![Travis CI ](http://img.shields.io/travis/rack-webprofiler/rack-webprofiler/master.svg) ](https://travis-ci.org/rack-profiler/rack-webprofiler)
7
+ [![Gitter ](https://img.shields.io/gitter/room/rack-webprofiler/rack-webprofiler.svg) ](https://gitter.im/rack-webprofiler/rack-webprofiler)
8
8
 
9
9
  ## Installation
10
10
 
11
11
  Add this line to your application's Gemfile:
12
12
 
13
13
  ```ruby
14
- gem 'rack-webprofiler'
14
+ gem "rack-webprofiler"
15
15
  ```
16
16
 
17
17
  And then execute:
@@ -22,7 +22,7 @@ Or install it yourself as:
22
22
 
23
23
  $ gem install rack-webprofiler
24
24
 
25
- ### Rack
25
+ ### Usage
26
26
 
27
27
  ```ruby
28
28
  home = lambda { |_env|
@@ -44,19 +44,22 @@ You can specify the temporary directory. It is used to save the SQlite database.
44
44
 
45
45
  ```ruby
46
46
  use Rack::WebProfiler, tmp_dir: File.expand_path("/tmp", __FILE__)
47
- ```
48
-
49
- ## Usage
50
47
 
51
- TODO
52
-
53
- HTTP headers `X-RackWebProfiler-Token` `X-RackWebProfiler-Url`.
48
+ # OR
54
49
 
50
+ use Rack::WebProfiler.config do |c|
51
+ c.tmp_dir = File.expand_path("/tmp", __FILE__)
52
+ end
53
+ ```
55
54
 
56
55
  ## Examples
57
56
 
58
57
  See [the examples](./examples).
59
58
 
59
+ ## Documentation
60
+
61
+ See [the documentation](./docs).
62
+
60
63
  ## Development
61
64
 
62
65
  After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -71,8 +74,9 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/nicola
71
74
 
72
75
  ## Contributors
73
76
 
74
- * Thomas de Cicco — Design ([@Thomasdc_](https://twitter.com/Thomasdc_))
75
- * Christophe Massolin — FrontEnd ([@furiouzz](https://github.com/furiouzz))
77
+ * [@Thomasdc_](https://twitter.com/Thomasdc_) — Design
78
+ * [@furiouzz](https://github.com/furiouzz) — FrontEnd
79
+ * [@flo-sch](https://github.com/flo-sch) — FrontEnd
76
80
 
77
81
  ## License
78
82
 
data/docs/DSL.md ADDED
@@ -0,0 +1,152 @@
1
+ # @title Collector DSL
2
+
3
+ # Collector DSL
4
+
5
+ ## Presentation
6
+
7
+ {Rack::WebProfiler::Collector::DSL}
8
+ {Rack::WebProfiler::Collector::DSL::ClassMethods}
9
+
10
+ ## Collector DSL methods
11
+
12
+ ### `identifier`
13
+
14
+ Technical identifier of the collector.
15
+
16
+ **example**
17
+
18
+ ```ruby
19
+ identifier "my_collector"
20
+ ```
21
+
22
+ ### `label`
23
+
24
+ The label is shown in panel sidebar.
25
+
26
+ **example**
27
+
28
+ ```ruby
29
+ label "My Collector"
30
+ ```
31
+
32
+ ### `icon`
33
+
34
+ Base64 encoded image for the icon collector.
35
+
36
+ **example**
37
+
38
+ ```ruby
39
+ icon <<-'ICON'
40
+ data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=
41
+ ICON
42
+ ```
43
+
44
+ ### `position`
45
+
46
+ Position of the collector in the toolbar.
47
+
48
+ **example**
49
+
50
+ ```ruby
51
+ position 2
52
+ ```
53
+
54
+ ### `collect`
55
+
56
+ Place to collect data to store. It give you access to the {Rack::WebProfiler::Request} and the {Rack::WebProfiler::Response}.
57
+ Inside you could `store` the datas you want. And you also could set a `status`.
58
+ There is `success`, `warning` and `error` has available `status`.
59
+
60
+ **example**
61
+
62
+ ```ruby
63
+ collect do |request, response|
64
+ store :url, request.url
65
+ store :key, ["v1", "v2"]
66
+
67
+ status :success if response.successful?
68
+ end
69
+ ```
70
+
71
+ ### `template`
72
+
73
+ **example**
74
+
75
+ ```ruby
76
+ template "../path/to/template.erb"
77
+ # Or
78
+ template __FILE__, type: :DATA
79
+ ```
80
+
81
+ ### `is_enabled?`
82
+
83
+ **example**
84
+
85
+ ```ruby
86
+ is_enabled? -> { defined? MyApp }
87
+ ```
88
+
89
+ ## Collector template
90
+
91
+ ### `h`
92
+ ### `highlight`
93
+ ### `partial`
94
+ ### `tab_content`
95
+ ### `panel_content`
96
+ ### `data(k)`
97
+
98
+ ## Collector registration
99
+
100
+ It's really simple to register a Collector or an {Array} of collectors.
101
+
102
+ ```ruby
103
+ Rack::WebProfiler.register_collector MyCustomCollector
104
+ Rack::WebProfiler.register_collector [MyCustomCollector, MySecondCustomCollector]
105
+ ```
106
+
107
+ You could also unregister a collector
108
+
109
+ ```ruby
110
+ Rack::WebProfiler.unregister_collector MyCustomCollector
111
+ Rack::WebProfiler.unregister_collector [MyCustomCollector, MySecondCustomCollector]
112
+ ```
113
+
114
+
115
+ ## Example
116
+
117
+ ```ruby
118
+ class MyCustomCollector
119
+ include Rack::WebProfiler::Collector::DSL
120
+
121
+ icon <<-'ICON'
122
+ data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=
123
+ ICON
124
+
125
+ identifier "my_collector"
126
+ label "My Collector"
127
+ position 2
128
+
129
+ collect do |request, response|
130
+ store :url, request.url
131
+ store :key, ["v1", "v2"]
132
+
133
+ status :success if response.successful?
134
+ end
135
+
136
+ template __FILE__, type: :DATA
137
+
138
+ is_enabled? -> { defined? MyApp }
139
+ end
140
+
141
+ __END__
142
+ <% tab_content do %>
143
+ <%=h data(:url) %>
144
+ <% end %>
145
+
146
+ <%# panel_content do %>
147
+ <ul>
148
+ <li><%=h data(:url) %></li>
149
+ <li><%=h data(:key).inspect %></li>
150
+ </ul>
151
+ <%# end %>
152
+ ```
@@ -0,0 +1,51 @@
1
+ # @title Getting Started Guide
2
+
3
+ # Getting Started
4
+
5
+
6
+
7
+ ## Installation
8
+
9
+ Add this line to your application's Gemfile:
10
+
11
+ ```ruby
12
+ gem "rack-webprofiler"
13
+ ```
14
+
15
+ ## Usage
16
+
17
+ ```ruby
18
+ home = lambda { |_env|
19
+ [200, { "Content-Type" => "text/html" }, ["<html><body>Hello world!</body></html>"]]
20
+ }
21
+
22
+ builder = Rack::Builder.new do
23
+ use Rack::WebProfiler
24
+
25
+ map('/') { run home }
26
+ end
27
+
28
+ run builder
29
+ ```
30
+
31
+
32
+ ## Configuration
33
+
34
+ You can specify the temporary directory. It is used to save the SQlite database.
35
+
36
+ ```ruby
37
+ use Rack::WebProfiler, tmp_dir: File.expand_path("/tmp", __FILE__)
38
+
39
+ # OR
40
+
41
+ use Rack::WebProfiler.config do |c|
42
+ c.tmp_dir = File.expand_path("/tmp", __FILE__)
43
+ end
44
+ ```
45
+
46
+
47
+ ## Create your own collector
48
+
49
+ It's quite simple to create your own collector with the DSL. You have to
50
+ create a new class who include `rack-profiler` [DSL](./DSL.md) then use
51
+ the methods.
data/docs/README.md ADDED
@@ -0,0 +1,6 @@
1
+ # @title Documentation
2
+
3
+ # Documentation
4
+
5
+ * [Getting started](./GettingStarted.md)
6
+ * [DSL](./DSL.md)
@@ -1 +1 @@
1
- @font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local("Open Sans Light"),local("OpenSans-Light"),url("https://fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTRampu5_7CjHW5spxoeN3Vs.woff2") format("woff2")}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local("Open Sans"),local("OpenSans"),url("https://fonts.gstatic.com/s/opensans/v13/cJZKeOuBrn4kERxqtaUH3ZBw1xU1rKptJj_0jans920.woff2") format("woff2")}@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;src:local("Open Sans Semibold"),local("OpenSans-Semibold"),url("https://fonts.gstatic.com/s/opensans/v13/MTP_ySUJH_bn48VBG8sNShampu5_7CjHW5spxoeN3Vs.woff2") format("woff2")}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local("Open Sans Bold"),local("OpenSans-Bold"),url("https://fonts.gstatic.com/s/opensans/v13/k3k702ZOKiLJc3WVjuplzBampu5_7CjHW5spxoeN3Vs.woff2") format("woff2")}@font-face{font-family:'Open Sans';font-style:normal;font-weight:800;src:local("Open Sans Extrabold"),local("OpenSans-Extrabold"),url("https://fonts.gstatic.com/s/opensans/v13/EInbV5DfGHOiMmvb1Xr-hhampu5_7CjHW5spxoeN3Vs.woff2") format("woff2")}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300;src:local("Open Sans Light Italic"),local("OpenSansLight-Italic"),url("https://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxtTIkQYohD4BpHvJ3NvbHoA.woff2") format("woff2")}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local("Open Sans Italic"),local("OpenSans-Italic"),url("https://fonts.gstatic.com/s/opensans/v13/xjAJXh38I15wypJXxuGMBogp9Q8gbYrhqGlRav_IXfk.woff2") format("woff2")}@font-face{font-family:'Open Sans';font-style:italic;font-weight:600;src:local("Open Sans Semibold Italic"),local("OpenSans-SemiboldItalic"),url("https://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxsiAiQ_a33snTsJhwZvMEaI.woff2") format("woff2")}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local("Open Sans Bold Italic"),local("OpenSans-BoldItalic"),url("https://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxv79_ZuUxCigM2DespTnFaw.woff2") format("woff2")}@font-face{font-family:'Open Sans';font-style:italic;font-weight:800;src:local("Open Sans Extrabold Italic"),local("OpenSans-ExtraboldItalic"),url("https://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxmPkvcX8kXDzy1NrkNCBkJ4.woff2") format("woff2")}#rack-webprofiler-bar{position:fixed;left:0;bottom:0;font-family:"Open Sans","Helvetica Neue",Arial,sans-serif;height:45px;/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */}#rack-webprofiler-bar img,#rack-webprofiler-bar legend{border:0}#rack-webprofiler-bar legend,#rack-webprofiler-bar td,#rack-webprofiler-bar th{padding:0}#rack-webprofiler-bar html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}#rack-webprofiler-bar body{margin:0}#rack-webprofiler-bar article,#rack-webprofiler-bar aside,#rack-webprofiler-bar details,#rack-webprofiler-bar figcaption,#rack-webprofiler-bar figure,#rack-webprofiler-bar footer,#rack-webprofiler-bar header,#rack-webprofiler-bar hgroup,#rack-webprofiler-bar main,#rack-webprofiler-bar menu,#rack-webprofiler-bar nav,#rack-webprofiler-bar section,#rack-webprofiler-bar summary{display:block}#rack-webprofiler-bar audio,#rack-webprofiler-bar canvas,#rack-webprofiler-bar progress,#rack-webprofiler-bar video{display:inline-block;vertical-align:baseline}#rack-webprofiler-bar audio:not([controls]){display:none;height:0}#rack-webprofiler-bar [hidden],#rack-webprofiler-bar template{display:none}#rack-webprofiler-bar a{background-color:transparent}#rack-webprofiler-bar a:active,#rack-webprofiler-bar a:hover{outline:0}#rack-webprofiler-bar abbr[title]{border-bottom:1px dotted}#rack-webprofiler-bar b,#rack-webprofiler-bar optgroup,#rack-webprofiler-bar strong{font-weight:700}#rack-webprofiler-bar dfn{font-style:italic}#rack-webprofiler-bar h1{font-size:2em;margin:.67em 0}#rack-webprofiler-bar mark{background:#ff0;color:#000}#rack-webprofiler-bar small{font-size:80%}#rack-webprofiler-bar sub,#rack-webprofiler-bar sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}#rack-webprofiler-bar sup{top:-.5em}#rack-webprofiler-bar sub{bottom:-.25em}#rack-webprofiler-bar svg:not(:root){overflow:hidden}#rack-webprofiler-bar figure{margin:1em 40px}#rack-webprofiler-bar hr{box-sizing:content-box;height:0}#rack-webprofiler-bar pre,#rack-webprofiler-bar textarea{overflow:auto}#rack-webprofiler-bar code,#rack-webprofiler-bar kbd,#rack-webprofiler-bar pre,#rack-webprofiler-bar samp{font-family:monospace,monospace;font-size:1em}#rack-webprofiler-bar button,#rack-webprofiler-bar input,#rack-webprofiler-bar optgroup,#rack-webprofiler-bar select,#rack-webprofiler-bar textarea{color:inherit;font:inherit;margin:0}#rack-webprofiler-bar button{overflow:visible}#rack-webprofiler-bar button,#rack-webprofiler-bar select{text-transform:none}#rack-webprofiler-bar button,#rack-webprofiler-bar html input[type=button],#rack-webprofiler-bar input[type=reset],#rack-webprofiler-bar input[type=submit]{-webkit-appearance:button;cursor:pointer}#rack-webprofiler-bar button[disabled],#rack-webprofiler-bar html input[disabled]{cursor:default}#rack-webprofiler-bar button::-moz-focus-inner,#rack-webprofiler-bar input::-moz-focus-inner{border:0;padding:0}#rack-webprofiler-bar input{line-height:normal}#rack-webprofiler-bar input[type=checkbox],#rack-webprofiler-bar input[type=radio]{box-sizing:border-box;padding:0}#rack-webprofiler-bar input[type=number]::-webkit-inner-spin-button,#rack-webprofiler-bar input[type=number]::-webkit-outer-spin-button{height:auto}#rack-webprofiler-bar input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}#rack-webprofiler-bar input[type=search]::-webkit-search-cancel-button,#rack-webprofiler-bar input[type=search]::-webkit-search-decoration{-webkit-appearance:none}#rack-webprofiler-bar fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}#rack-webprofiler-bar table{border-collapse:collapse;border-spacing:0}#rack-webprofiler-bar *{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-osx-font-smooth:grayscale;margin:0;padding:0}#rack-webprofiler-bar a{text-decoration:none}#rack-webprofiler-bar.rack-webprofiler--long{width:100%;background-color:#1c1f33}#rack-webprofiler-bar .rack-webprofiler__wrapper{display:table}#rack-webprofiler-bar .rack-webprofiler__item{box-sizing:border-box;display:table-cell;height:40px;padding:10px;position:relative;background-color:#1c1f33;border-top:1px #282f4c solid;border-right:1px #282f4c solid}#rack-webprofiler-bar .rack-webprofiler__item a{width:100%;height:100%;display:inline-block}#rack-webprofiler-bar .rack-webprofiler__item--has-drop{cursor:pointer}#rack-webprofiler-bar .rack-webprofiler__item:hover{background-color:#282f4c}#rack-webprofiler-bar .rack-webprofiler__item:hover .rack-webprofiler__item__drop{display:block}#rack-webprofiler-bar .rack-webprofiler__item i.icn{display:inline-block;vertical-align:middle;padding-left:2px;padding-right:5px}#rack-webprofiler-bar .rack-webprofiler__item--close{width:45px;text-align:center;-webkit-user-select:none;user-select:none;cursor:pointer}#rack-webprofiler-bar .rack-webprofiler__item--close i.icn{padding:0px}#rack-webprofiler-bar .rack-webprofiler__item__label,#rack-webprofiler-bar .rack-webprofiler__item__value{font-weight:600;font-size:0.875em;color:#c4c2cc}#rack-webprofiler-bar .rack-webprofiler__item__value{color:#f3fcf0;vertical-align:middle}#rack-webprofiler-bar .rack-webprofiler__item__status-color{display:block;width:100%;height:4px;position:absolute;left:0;bottom:0}#rack-webprofiler-bar .rack-webprofiler__item__status-color.success{background-color:#7ed321}#rack-webprofiler-bar .rack-webprofiler__item__status-color.warning{background-color:#f8e71c}#rack-webprofiler-bar .rack-webprofiler__item__status-color.error{background-color:#d92b2e}#rack-webprofiler-bar .rack-webprofiler__item__drop{display:none;width:100%;height:1px;position:absolute;top:-1px;left:-1px}#rack-webprofiler-bar .rack-webprofiler__item__drop .rack-webprofiler__item__value{font-weight:400}#rack-webprofiler-bar .rack-webprofiler__item__drop .rack-webprofiler__item__drop__wrapper{box-sizing:border-box;min-width:100%;padding:10px;border:1px #282f4c solid;border-bottom:0;background-color:#202540;white-space:nowrap;position:absolute;left:0;bottom:0}#rack-webprofiler-bar .rack-webprofiler__item__drop--list .rack-webprofiler__item__drop__wrapper .rack-webprofiler__item__label{color:#c4c2cc}#rack-webprofiler-bar .rack-webprofiler__item__drop--list .rack-webprofiler__item__drop__wrapper .rack-webprofiler__item__value{padding-left:10px;color:#f3fcf0}#rack-webprofiler-bar .rack-webprofiler__item__drop--list .rack-webprofiler__item__drop__wrapper th,#rack-webprofiler-bar .rack-webprofiler__item__drop--list .rack-webprofiler__item__drop__wrapper td{text-align:left;white-space:nowrap}
1
+ @font-face{font-family:'Open Sans';font-style:normal;font-weight:300;src:local("Open Sans Light"),local("OpenSans-Light"),url("https://fonts.gstatic.com/s/opensans/v13/DXI1ORHCpsQm3Vp6mXoaTRampu5_7CjHW5spxoeN3Vs.woff2") format("woff2")}@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:local("Open Sans"),local("OpenSans"),url("https://fonts.gstatic.com/s/opensans/v13/cJZKeOuBrn4kERxqtaUH3ZBw1xU1rKptJj_0jans920.woff2") format("woff2")}@font-face{font-family:'Open Sans';font-style:normal;font-weight:600;src:local("Open Sans Semibold"),local("OpenSans-Semibold"),url("https://fonts.gstatic.com/s/opensans/v13/MTP_ySUJH_bn48VBG8sNShampu5_7CjHW5spxoeN3Vs.woff2") format("woff2")}@font-face{font-family:'Open Sans';font-style:normal;font-weight:700;src:local("Open Sans Bold"),local("OpenSans-Bold"),url("https://fonts.gstatic.com/s/opensans/v13/k3k702ZOKiLJc3WVjuplzBampu5_7CjHW5spxoeN3Vs.woff2") format("woff2")}@font-face{font-family:'Open Sans';font-style:normal;font-weight:800;src:local("Open Sans Extrabold"),local("OpenSans-Extrabold"),url("https://fonts.gstatic.com/s/opensans/v13/EInbV5DfGHOiMmvb1Xr-hhampu5_7CjHW5spxoeN3Vs.woff2") format("woff2")}@font-face{font-family:'Open Sans';font-style:italic;font-weight:300;src:local("Open Sans Light Italic"),local("OpenSansLight-Italic"),url("https://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxtTIkQYohD4BpHvJ3NvbHoA.woff2") format("woff2")}@font-face{font-family:'Open Sans';font-style:italic;font-weight:400;src:local("Open Sans Italic"),local("OpenSans-Italic"),url("https://fonts.gstatic.com/s/opensans/v13/xjAJXh38I15wypJXxuGMBogp9Q8gbYrhqGlRav_IXfk.woff2") format("woff2")}@font-face{font-family:'Open Sans';font-style:italic;font-weight:600;src:local("Open Sans Semibold Italic"),local("OpenSans-SemiboldItalic"),url("https://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxsiAiQ_a33snTsJhwZvMEaI.woff2") format("woff2")}@font-face{font-family:'Open Sans';font-style:italic;font-weight:700;src:local("Open Sans Bold Italic"),local("OpenSans-BoldItalic"),url("https://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxv79_ZuUxCigM2DespTnFaw.woff2") format("woff2")}@font-face{font-family:'Open Sans';font-style:italic;font-weight:800;src:local("Open Sans Extrabold Italic"),local("OpenSans-ExtraboldItalic"),url("https://fonts.gstatic.com/s/opensans/v13/PRmiXeptR36kaC0GEAetxmPkvcX8kXDzy1NrkNCBkJ4.woff2") format("woff2")}#rack-webprofiler-bar{position:fixed;height:auto;left:0;bottom:0;font-family:"Open Sans","Helvetica Neue",Arial,sans-serif;font-size:16px;/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */}#rack-webprofiler-bar img,#rack-webprofiler-bar legend{border:0}#rack-webprofiler-bar legend,#rack-webprofiler-bar td,#rack-webprofiler-bar th{padding:0}#rack-webprofiler-bar html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}#rack-webprofiler-bar body{margin:0}#rack-webprofiler-bar article,#rack-webprofiler-bar aside,#rack-webprofiler-bar details,#rack-webprofiler-bar figcaption,#rack-webprofiler-bar figure,#rack-webprofiler-bar footer,#rack-webprofiler-bar header,#rack-webprofiler-bar hgroup,#rack-webprofiler-bar main,#rack-webprofiler-bar menu,#rack-webprofiler-bar nav,#rack-webprofiler-bar section,#rack-webprofiler-bar summary{display:block}#rack-webprofiler-bar audio,#rack-webprofiler-bar canvas,#rack-webprofiler-bar progress,#rack-webprofiler-bar video{display:inline-block;vertical-align:baseline}#rack-webprofiler-bar audio:not([controls]){display:none;height:0}#rack-webprofiler-bar [hidden],#rack-webprofiler-bar template{display:none}#rack-webprofiler-bar a{background-color:transparent}#rack-webprofiler-bar a:active,#rack-webprofiler-bar a:hover{outline:0}#rack-webprofiler-bar abbr[title]{border-bottom:1px dotted}#rack-webprofiler-bar b,#rack-webprofiler-bar optgroup,#rack-webprofiler-bar strong{font-weight:700}#rack-webprofiler-bar dfn{font-style:italic}#rack-webprofiler-bar h1{font-size:2em;margin:.67em 0}#rack-webprofiler-bar mark{background:#ff0;color:#000}#rack-webprofiler-bar small{font-size:80%}#rack-webprofiler-bar sub,#rack-webprofiler-bar sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}#rack-webprofiler-bar sup{top:-.5em}#rack-webprofiler-bar sub{bottom:-.25em}#rack-webprofiler-bar svg:not(:root){overflow:hidden}#rack-webprofiler-bar figure{margin:1em 40px}#rack-webprofiler-bar hr{box-sizing:content-box;height:0}#rack-webprofiler-bar pre,#rack-webprofiler-bar textarea{overflow:auto}#rack-webprofiler-bar code,#rack-webprofiler-bar kbd,#rack-webprofiler-bar pre,#rack-webprofiler-bar samp{font-family:monospace,monospace;font-size:1em}#rack-webprofiler-bar button,#rack-webprofiler-bar input,#rack-webprofiler-bar optgroup,#rack-webprofiler-bar select,#rack-webprofiler-bar textarea{color:inherit;font:inherit;margin:0}#rack-webprofiler-bar button{overflow:visible}#rack-webprofiler-bar button,#rack-webprofiler-bar select{text-transform:none}#rack-webprofiler-bar button,#rack-webprofiler-bar html input[type=button],#rack-webprofiler-bar input[type=reset],#rack-webprofiler-bar input[type=submit]{-webkit-appearance:button;cursor:pointer}#rack-webprofiler-bar button[disabled],#rack-webprofiler-bar html input[disabled]{cursor:default}#rack-webprofiler-bar button::-moz-focus-inner,#rack-webprofiler-bar input::-moz-focus-inner{border:0;padding:0}#rack-webprofiler-bar input{line-height:normal}#rack-webprofiler-bar input[type=checkbox],#rack-webprofiler-bar input[type=radio]{box-sizing:border-box;padding:0}#rack-webprofiler-bar input[type=number]::-webkit-inner-spin-button,#rack-webprofiler-bar input[type=number]::-webkit-outer-spin-button{height:auto}#rack-webprofiler-bar input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}#rack-webprofiler-bar input[type=search]::-webkit-search-cancel-button,#rack-webprofiler-bar input[type=search]::-webkit-search-decoration{-webkit-appearance:none}#rack-webprofiler-bar fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}#rack-webprofiler-bar table{border-collapse:collapse;border-spacing:0}#rack-webprofiler-bar *{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-osx-font-smooth:grayscale;margin:0;padding:0}#rack-webprofiler-bar a{text-decoration:none}#rack-webprofiler-bar.rack-webprofiler--long{width:100%;background-color:#1c1f33}#rack-webprofiler-bar .rack-webprofiler__wrapper{display:table}#rack-webprofiler-bar .rack-webprofiler__item{display:table-cell;position:relative;background-color:#1c1f33}#rack-webprofiler-bar .rack-webprofiler__item a,#rack-webprofiler-bar .rack-webprofiler__item .rack-webprofiler__item-content{position:relative;display:block;height:40px;padding:10px;box-sizing:border-box;line-height:20px;border-top:1px #282f4a solid;border-right:1px #282f4a solid}#rack-webprofiler-bar .rack-webprofiler__item:hover{background-color:#232740}#rack-webprofiler-bar .rack-webprofiler__item:hover .details{display:block}#rack-webprofiler-bar .rack-webprofiler__item i.icn{float:left;height:20px;margin-right:5px}#rack-webprofiler-bar .rack-webprofiler__item i.icn img{display:block;height:100%;width:auto}#rack-webprofiler-bar .rack-webprofiler__item--close{width:45px;text-align:center;-webkit-user-select:none;user-select:none;cursor:pointer}#rack-webprofiler-bar .rack-webprofiler__item--close i.icn{padding:0px}#rack-webprofiler-bar .rack-webprofiler__item__label,#rack-webprofiler-bar .rack-webprofiler__item__value{font-weight:600;font-size:14px;color:#c4c2cc}#rack-webprofiler-bar .rack-webprofiler__item__value{float:left;line-height:20px;color:#f3fcf0;vertical-align:middle}#rack-webprofiler-bar .rack-webprofiler__item__status-color{display:block;position:absolute;width:100%;height:4px;left:0;right:0;bottom:0}#rack-webprofiler-bar .rack-webprofiler__item__status-color.success{background-color:#7ed321}#rack-webprofiler-bar .rack-webprofiler__item__status-color.warning{background-color:#f8e71c}#rack-webprofiler-bar .rack-webprofiler__item__status-color.danger{background-color:#d92b2e}#rack-webprofiler-bar .details{display:none;width:auto;position:absolute;top:-1px;left:-1px;transform:translate3d(0, -100%, 0);background:#232740}#rack-webprofiler-bar .details .wrapper{box-sizing:border-box;padding:10px;border:1px solid #282f4a;border-bottom:0}#rack-webprofiler-bar .details dl dt{float:left;clear:left;width:100px;overflow:hidden;text-overflow:ellipsis;font-weight:600;color:#c4c2cc}#rack-webprofiler-bar .details dl dd{margin-left:100px;font-weight:400;color:#f3fcf0}#rack-webprofiler-bar .details dl dt,#rack-webprofiler-bar .details dl dd{text-align:left;white-space:nowrap}
@@ -1 +1 @@
1
- .highlight .hll{background-color:#ffc}.highlight .c{color:#999988;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k{color:#000000;font-weight:bold}.highlight .o{color:#000000;font-weight:bold}.highlight .cm{color:#999988;font-style:italic}.highlight .cp{color:#999999;font-weight:bold;font-style:italic}.highlight .c1{color:#999988;font-style:italic}.highlight .cs{color:#999999;font-weight:bold;font-style:italic}.highlight .gd{color:#000000;background-color:#fdd}.highlight .ge{color:#000000;font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:#999}.highlight .gi{color:#000000;background-color:#dfd}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs{font-weight:bold}.highlight .gu{color:#aaa}.highlight .gt{color:#a00}.highlight .kc{color:#000000;font-weight:bold}.highlight .kd{color:#000000;font-weight:bold}.highlight .kn{color:#000000;font-weight:bold}.highlight .kp{color:#000000;font-weight:bold}.highlight .kr{color:#000000;font-weight:bold}.highlight .kt{color:#445588;font-weight:bold}.highlight .m{color:#099}.highlight .s{color:#d01040}.highlight .na{color:teal}.highlight .nb{color:#0086B3}.highlight .nc{color:#445588;font-weight:bold}.highlight .no{color:teal}.highlight .nd{color:#3c5d5d;font-weight:bold}.highlight .ni{color:purple}.highlight .ne{color:#990000;font-weight:bold}.highlight .nf{color:#990000;font-weight:bold}.highlight .nl{color:#990000;font-weight:bold}.highlight .nn{color:#555}.highlight .nt{color:navy}.highlight .nv{color:teal}.highlight .ow{color:#000000;font-weight:bold}.highlight .w{color:#bbb}.highlight .mf{color:#099}.highlight .mh{color:#099}.highlight .mi{color:#099}.highlight .mo{color:#099}.highlight .sb{color:#d01040}.highlight .sc{color:#d01040}.highlight .sd{color:#d01040}.highlight .s2{color:#d01040}.highlight .se{color:#d01040}.highlight .sh{color:#d01040}.highlight .si{color:#d01040}.highlight .sx{color:#d01040}.highlight .sr{color:#009926}.highlight .s1{color:#d01040}.highlight .ss{color:#990073}.highlight .bp{color:#999}.highlight .vc{color:teal}.highlight .vg{color:teal}.highlight .vi{color:teal}.highlight .il{color:#099}/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */img,legend{border:0}legend,td,th{padding:0}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}table{border-collapse:collapse;border-spacing:0}body{font-family:"Open Sans", "Helvetica Neue", Arial, sans-serif}#rack-webprofiler{position:absolute;width:100%;height:100%}#rack-webprofiler,#rack-webprofiler *{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-osx-font-smooth:grayscale}#rack-webprofiler a{text-decoration:none}#rack-webprofiler h1,#rack-webprofiler h2,#rack-webprofiler h3,#rack-webprofiler h4,#rack-webprofiler h5,#rack-webprofiler h6{margin-top:0;margin-bottom:25px;text-align:left;text-transform:none;font-weight:700;color:#1c1f33}#rack-webprofiler h1 {font-size:1.5em}#rack-webprofiler h2{font-size:1.25em}#rack-webprofiler h3{font-size:1.125em}#rack-webprofiler .block{margin-bottom:35px}#rack-webprofiler .block table{width:calc(100% - 2px);border-collapse:collapse;outline:1px #979797 solid}#rack-webprofiler .block table th,#rack-webprofiler .block table td{padding:6px 9px;border:1px #d8d8d8 solid;font-size:0.75em;word-break:break-all}#rack-webprofiler .block table th:first-child{width:20%}#rack-webprofiler .block table th:first-child,#rack-webprofiler .block table td:first-child{border-left-width:0}#rack-webprofiler .block table th:last-child,#rack-webprofiler .block table td:last-child{border-right-width:0}#rack-webprofiler .block table thead tr:first-child th,#rack-webprofiler .block table thead tr:first-child td{border-top-width:0}#rack-webprofiler .block table tbody tr:last-child th,#rack-webprofiler .block table tbody tr:last-child td{border-bottom-width:0}#rack-webprofiler .block table th{background-color:#ececec;text-align:left;font-weight:400;color:#1c1f33}#rack-webprofiler .block table thead th{text-transform:capitalize}#rack-webprofiler .block table td.code{font-family:"Courier New"}#rack-webprofiler .block p{text-align:left;text-transform:none;font-size:0.875em;line-height:1.4em;color:#666370}#rack-webprofiler .block.block--text .text__no-value{font-style:italic}#rack-webprofiler .block.block--summary table{width:100%;border-collapse:collapse}#rack-webprofiler .block.block--summary table th{text-align:left;line-height:1.4em;font-weight:400;font-size:0.875em;color:#666370}#rack-webprofiler .block.block--summary .value,#rack-webprofiler .block.block--summary .unit{font-size:1.25em}#rack-webprofiler .block.block--summary .value{color:#45425a}#rack-webprofiler .block.block--summary .unit{color:#9b9b9b}#rack-webprofiler .header__section{display:table;width:100%;height:40px;color:#fff;font-size:1em;font-weight:300;background-color:#ff2851}#rack-webprofiler .header__section:nth-child(even){background-color:#e62548}#rack-webprofiler .header__section.header__section--blank:before{content:""}#rack-webprofiler .header__section span{box-sizing:border-box;display:table-cell;vertical-align:middle;padding-left:20px}#rack-webprofiler .header__section span a{color:#f3fcf0;text-decoration:none}#rack-webprofiler #main{overflow-y:auto;width:calc(100% - 180px);height:100%;float:left}#rack-webprofiler #sidebar{width:180px;height:100%;float:left;background-color:#1c1f33}#rack-webprofiler #sidebar .sidebar__header{height:80px;border-bottom:1px #26304b solid;text-align:center}#rack-webprofiler #sidebar .sidebar__header:before{content:"";display:inline-block;height:100%;vertical-align:middle;margin-left:-0.25em}#rack-webprofiler #sidebar .sidebar__header .sidebar__header__wrapper{display:inline-block;vertical-align:middle}#rack-webprofiler #sidebar .sidebar__header span{display:block;font-size:1em;color:#f3fcf0}#rack-webprofiler #sidebar .sidebar__header .sidebar__header__title{margin-top:15px}#rack-webprofiler #sidebar .sidebar__header .sidebar__header__title a{color:#f3fcf0;text-decoration:none}#rack-webprofiler #sidebar .sidebar__item{display:table;width:100%;height:40px;border-bottom:1px #26304b solid;-webkit-user-select:none;user-select:none}#rack-webprofiler #sidebar .sidebar__item:hover{background-color:#282f4c}#rack-webprofiler #sidebar .sidebar__item.sidebar__item--blank{display:block}#rack-webprofiler #sidebar .sidebar__item .sidebar__item-inner{display:table-cell;vertical-align:middle}#rack-webprofiler #sidebar .sidebar__item .sidebar__item-inner a{width:100%;height:100%;display:inline-block}#rack-webprofiler #sidebar .sidebar__item .icn{display:inline-block;vertical-align:middle;padding:0px 8px}#rack-webprofiler #sidebar .sidebar__item .icn img{fill:red}#rack-webprofiler #sidebar .sidebar__item i,#rack-webprofiler #sidebar .sidebar__item span{vertical-align:middle;font-weight:600;color:#f3fcf0}#rack-webprofiler #wrapper{box-sizing:border-box;width:100%;min-height:calc(100% - 80px);padding:20px;margin-bottom:50px}#rack-webprofiler .wrapper__container{box-sizing:border-box;width:100%;min-height:100%;padding:15px;border:1px #e6e6e6 solid;background-color:#fff}#rack-webprofiler .wrapper__container a{color:#444}#rack-webprofiler .wrapper__container a:hover{color:#666}
1
+ .highlight .hll{background-color:#ffc}.highlight .c{color:#999988;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .k{color:#000000;font-weight:bold}.highlight .o{color:#000000;font-weight:bold}.highlight .cm{color:#999988;font-style:italic}.highlight .cp{color:#999999;font-weight:bold;font-style:italic}.highlight .c1{color:#999988;font-style:italic}.highlight .cs{color:#999999;font-weight:bold;font-style:italic}.highlight .gd{color:#000000;background-color:#fdd}.highlight .ge{color:#000000;font-style:italic}.highlight .gr{color:#a00}.highlight .gh{color:#999}.highlight .gi{color:#000000;background-color:#dfd}.highlight .go{color:#888}.highlight .gp{color:#555}.highlight .gs{font-weight:bold}.highlight .gu{color:#aaa}.highlight .gt{color:#a00}.highlight .kc{color:#000000;font-weight:bold}.highlight .kd{color:#000000;font-weight:bold}.highlight .kn{color:#000000;font-weight:bold}.highlight .kp{color:#000000;font-weight:bold}.highlight .kr{color:#000000;font-weight:bold}.highlight .kt{color:#445588;font-weight:bold}.highlight .m{color:#099}.highlight .s{color:#d01040}.highlight .na{color:teal}.highlight .nb{color:#0086B3}.highlight .nc{color:#445588;font-weight:bold}.highlight .no{color:teal}.highlight .nd{color:#3c5d5d;font-weight:bold}.highlight .ni{color:purple}.highlight .ne{color:#990000;font-weight:bold}.highlight .nf{color:#990000;font-weight:bold}.highlight .nl{color:#990000;font-weight:bold}.highlight .nn{color:#555}.highlight .nt{color:navy}.highlight .nv{color:teal}.highlight .ow{color:#000000;font-weight:bold}.highlight .w{color:#bbb}.highlight .mf{color:#099}.highlight .mh{color:#099}.highlight .mi{color:#099}.highlight .mo{color:#099}.highlight .sb{color:#d01040}.highlight .sc{color:#d01040}.highlight .sd{color:#d01040}.highlight .s2{color:#d01040}.highlight .se{color:#d01040}.highlight .sh{color:#d01040}.highlight .si{color:#d01040}.highlight .sx{color:#d01040}.highlight .sr{color:#009926}.highlight .s1{color:#d01040}.highlight .ss{color:#990073}.highlight .bp{color:#999}.highlight .vc{color:teal}.highlight .vg{color:teal}.highlight .vi{color:teal}.highlight .il{color:#099}/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */img,legend{border:0}legend,td,th{padding:0}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}table{border-collapse:collapse;border-spacing:0}body{font-family:"Open Sans", "Helvetica Neue", Arial, sans-serif}#rack-webprofiler{position:absolute;width:100%;height:100%}#rack-webprofiler,#rack-webprofiler *{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-osx-font-smooth:grayscale}#rack-webprofiler a{text-decoration:none}#rack-webprofiler h1,#rack-webprofiler h2,#rack-webprofiler h3,#rack-webprofiler h4,#rack-webprofiler h5,#rack-webprofiler h6{margin-top:0;margin-bottom:25px;text-align:left;text-transform:none;font-weight:700;color:#1c1f33}#rack-webprofiler h1 {font-size:1.5em}#rack-webprofiler h2{font-size:1.25em}#rack-webprofiler h3{font-size:1.125em}#rack-webprofiler .block{margin-bottom:35px}#rack-webprofiler .block table{width:calc(100% - 2px);border-collapse:collapse;outline:1px #979797 solid}#rack-webprofiler .block table th,#rack-webprofiler .block table td{padding:6px 9px;border:1px #d8d8d8 solid;font-size:0.75em;word-break:break-all}#rack-webprofiler .block table th:first-child{width:20%}#rack-webprofiler .block table th:first-child,#rack-webprofiler .block table td:first-child{border-left-width:0}#rack-webprofiler .block table th:last-child,#rack-webprofiler .block table td:last-child{border-right-width:0}#rack-webprofiler .block table thead tr:first-child th,#rack-webprofiler .block table thead tr:first-child td{border-top-width:0}#rack-webprofiler .block table tbody tr:last-child th,#rack-webprofiler .block table tbody tr:last-child td{border-bottom-width:0}#rack-webprofiler .block table th{background-color:#ececec;text-align:left;font-weight:400;color:#1c1f33}#rack-webprofiler .block table thead th{text-transform:capitalize}#rack-webprofiler .block table td.code{font-family:"Courier New"}#rack-webprofiler .block p{text-align:left;text-transform:none;font-size:0.875em;line-height:1.4em;color:#666370}#rack-webprofiler .block.block--text .text__no-value{font-style:italic}#rack-webprofiler .block.block--summary table{width:100%;border-collapse:collapse}#rack-webprofiler .block.block--summary table th{text-align:left;line-height:1.4em;font-weight:400;font-size:0.875em;color:#666370}#rack-webprofiler .block.block--summary .value,#rack-webprofiler .block.block--summary .unit{font-size:1.25em}#rack-webprofiler .block.block--summary .value{color:#45425a}#rack-webprofiler .block.block--summary .unit{color:#9b9b9b}#rack-webprofiler .header__section{display:table;width:100%;height:40px;color:#fff;font-size:1em;font-weight:300;background-color:#ff2851}#rack-webprofiler .header__section:nth-child(even){background-color:#e62548}#rack-webprofiler .header__section.header__section--blank:before{content:""}#rack-webprofiler .header__section span{box-sizing:border-box;display:table-cell;vertical-align:middle;padding-left:20px}#rack-webprofiler .header__section span a{color:#f3fcf0;text-decoration:none}#rack-webprofiler #main{overflow-y:auto;width:calc(100% - 180px);height:100%;float:left}#rack-webprofiler #sidebar{width:180px;height:100%;float:left;background-color:#1c1f33}#rack-webprofiler #sidebar .sidebar__header{height:80px;border-bottom:1px #26304b solid;text-align:center}#rack-webprofiler #sidebar .sidebar__header:before{content:"";display:inline-block;height:100%;vertical-align:middle;margin-left:-0.25em}#rack-webprofiler #sidebar .sidebar__header .sidebar__header__wrapper{display:inline-block;vertical-align:middle}#rack-webprofiler #sidebar .sidebar__header span{display:block;font-size:1em;color:#f3fcf0}#rack-webprofiler #sidebar .sidebar__header .sidebar__header__title{margin-top:15px}#rack-webprofiler #sidebar .sidebar__header .sidebar__header__title a{color:#f3fcf0;text-decoration:none}#rack-webprofiler #sidebar .sidebar__item{display:table;width:100%;height:40px;border-bottom:1px #26304b solid;-webkit-user-select:none;user-select:none}#rack-webprofiler #sidebar .sidebar__item:hover,#rack-webprofiler #sidebar .sidebar__item.active{background-color:#282f4a}#rack-webprofiler #sidebar .sidebar__item.sidebar__item--blank{display:block}#rack-webprofiler #sidebar .sidebar__item .sidebar__item-inner{display:table-cell;vertical-align:middle}#rack-webprofiler #sidebar .sidebar__item .sidebar__item-inner a{width:100%;height:100%;display:inline-block}#rack-webprofiler #sidebar .sidebar__item .icn{display:inline-block;vertical-align:middle;padding:0px 8px}#rack-webprofiler #sidebar .sidebar__item .icn img{fill:red}#rack-webprofiler #sidebar .sidebar__item i,#rack-webprofiler #sidebar .sidebar__item span{vertical-align:middle;font-weight:600;color:#f3fcf0}#rack-webprofiler #wrapper{box-sizing:border-box;width:100%;min-height:calc(100% - 80px);padding:20px}#rack-webprofiler .wrapper__container{box-sizing:border-box;width:100%;min-height:100%;padding:15px;border:1px #e6e6e6 solid;background-color:#fff}#rack-webprofiler .wrapper__container a{color:#444}#rack-webprofiler .wrapper__container a:hover{color:#666}
@@ -1,12 +1,31 @@
1
1
  $dark_blue: #1c1f33;
2
- $dark_blue_light: #282f4c;
2
+ $dark_blue_hover: #232740;
3
+ $dark_blue_light: #282f4a;
4
+ $tiny_grey: #f3fcf0;
5
+ $light_grey: #c4c2cc;
6
+
7
+ $success_color: #7ed321;
8
+ $warning_color: #f8e71c;
9
+ $danger_color: #d92b2e;
3
10
 
4
11
  $fonts: "Open Sans", "Helvetica Neue", Arial, sans-serif;
5
12
 
6
13
  $profiler_bar_background: $dark_blue;
7
14
  $profiler_bar_border: $dark_blue_light;
8
- $profiler_bar__item_hover: $dark_blue_light;
15
+ $profiler_bar__item_hover: $dark_blue_hover;
16
+ $profiler_bar__item_details_label_width: 100px;
9
17
 
10
18
  $profiler_panel__sidebar_width: 180px;
11
19
  $profiler_panel__sidebar_background: $dark_blue;
12
20
  $profiler_panel__sidebar_item_hover: $dark_blue_light;
21
+
22
+ @mixin clearfix() {
23
+ &:before,
24
+ &:after {
25
+ content: '';
26
+ display: table;
27
+ }
28
+ &:after {
29
+ clear: both;
30
+ }
31
+ }
@@ -4,10 +4,12 @@
4
4
 
5
5
  #rack-webprofiler-bar {
6
6
  position: fixed;
7
+ height: auto;
7
8
  left: 0;
8
9
  bottom: 0;
9
10
  font-family: $fonts;
10
- height: 45px;
11
+ // Specify the container font-size, to prevent a global stylesheet side-effect.
12
+ font-size: 16px;
11
13
 
12
14
  @include normalize;
13
15
 
@@ -31,35 +33,38 @@
31
33
  display: table;
32
34
  }
33
35
  .rack-webprofiler__item {
34
- box-sizing: border-box;
35
36
  display: table-cell;
36
- height: 40px;
37
- padding: 10px;
38
37
  position: relative;
39
38
  background-color: $profiler_bar_background;
40
- border-top: 1px $profiler_bar_border solid;
41
- border-right: 1px $profiler_bar_border solid;
42
39
 
43
- a {
44
- width: 100%;
45
- height: 100%;
46
- display: inline-block;
40
+ a,
41
+ .rack-webprofiler__item-content {
42
+ // Position is important here, because .details will base itself on it!
43
+ position: relative;
44
+ display: block;
45
+ height: 40px;
46
+ padding: 10px;
47
+ box-sizing: border-box;
48
+ line-height: 20px;
49
+ border-top: 1px $profiler_bar_border solid;
50
+ border-right: 1px $profiler_bar_border solid;
47
51
  }
48
52
  }
49
- .rack-webprofiler__item--has-drop {
50
- cursor: pointer;
51
- }
52
53
  .rack-webprofiler__item:hover {
53
54
  background-color: $profiler_bar__item_hover;
54
55
  }
55
- .rack-webprofiler__item:hover .rack-webprofiler__item__drop {
56
+ .rack-webprofiler__item:hover .details {
56
57
  display: block;
57
58
  }
58
59
  .rack-webprofiler__item i.icn {
59
- display: inline-block;
60
- vertical-align: middle;
61
- padding-left: 2px;
62
- padding-right: 5px;
60
+ float: left;
61
+ height: 20px;
62
+ margin-right: 5px;
63
+ img {
64
+ display: block;
65
+ height: 100%;
66
+ width: auto;
67
+ }
63
68
  }
64
69
  .rack-webprofiler__item--close {
65
70
  width: 45px;
@@ -74,64 +79,71 @@
74
79
  .rack-webprofiler__item__label,
75
80
  .rack-webprofiler__item__value {
76
81
  font-weight: 600;
77
- font-size: 0.875em;
78
- color: #c4c2cc;
82
+ font-size: 14px;
83
+ color: $light_grey;
79
84
  }
80
85
  .rack-webprofiler__item__value {
81
- color: #f3fcf0;
86
+ float: left;
87
+ line-height: 20px;
88
+ color: $tiny_grey;
82
89
  vertical-align: middle;
83
90
  }
84
91
  .rack-webprofiler__item__status-color {
85
92
  display: block;
93
+ position: absolute;
86
94
  width: 100%;
87
95
  height: 4px;
88
- position: absolute;
89
96
  left: 0;
97
+ right: 0;
90
98
  bottom: 0;
99
+ &.success {
100
+ background-color: $success_color;
101
+ }
102
+ &.warning {
103
+ background-color: $warning_color;
104
+ }
105
+ &.danger {
106
+ background-color: $danger_color;
107
+ }
91
108
  }
92
- .rack-webprofiler__item__status-color.success {
93
- background-color: #7ed321;
94
- }
95
- .rack-webprofiler__item__status-color.warning {
96
- background-color: #f8e71c;
97
- }
98
- .rack-webprofiler__item__status-color.error {
99
- background-color: #d92b2e;
100
- }
101
- .rack-webprofiler__item__drop {
109
+
110
+ .details {
102
111
  display: none;
103
- width: 100%;
104
- height: 1px;
112
+ width: auto;
105
113
  position: absolute;
106
114
  top: -1px;
107
115
  left: -1px;
108
- }
109
- .rack-webprofiler__item__drop .rack-webprofiler__item__value {
110
- font-weight: 400;
111
- }
112
- .rack-webprofiler__item__drop .rack-webprofiler__item__drop__wrapper {
113
- box-sizing: border-box;
114
- min-width: 100%;
115
- padding: 10px;
116
- border: 1px #282f4c solid;
117
- border-bottom: 0;
118
- background-color: #202540;
119
- white-space: nowrap;
120
- position: absolute;
121
- left: 0;
122
- bottom: 0;
123
- }
124
- .rack-webprofiler__item__drop--list .rack-webprofiler__item__drop__wrapper .rack-webprofiler__item__label {
125
- color: #c4c2cc;
126
- }
127
- .rack-webprofiler__item__drop--list .rack-webprofiler__item__drop__wrapper .rack-webprofiler__item__value {
128
- padding-left: 10px;
129
- color: #f3fcf0;
130
- }
131
- .rack-webprofiler__item__drop--list .rack-webprofiler__item__drop__wrapper th,
132
- .rack-webprofiler__item__drop--list .rack-webprofiler__item__drop__wrapper td {
133
- text-align: left;
134
- white-space: nowrap;
116
+ transform: translate3d(0, -100%, 0);
117
+ background: $dark_blue_hover;
118
+
119
+ .wrapper {
120
+ box-sizing: border-box;
121
+ padding: 10px;
122
+ border: 1px solid $dark_blue_light;
123
+ border-bottom: 0;
124
+ }
125
+
126
+ dl {
127
+ dt {
128
+ float: left;
129
+ clear: left;
130
+ width: $profiler_bar__item_details_label_width;
131
+ overflow: hidden;
132
+ text-overflow: ellipsis;
133
+ font-weight: 600;
134
+ color: $light_grey;
135
+ }
136
+ dd {
137
+ margin-left: $profiler_bar__item_details_label_width;
138
+ font-weight: 400;
139
+ color: $tiny_grey;
140
+ }
141
+ dt,
142
+ dd {
143
+ text-align: left;
144
+ white-space: nowrap;
145
+ }
146
+ }
135
147
  }
136
148
  }
137
149