rack-webprofiler 0.1.0.pre.beta2 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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