rack-webprofiler 0.1.0.pre.beta1 → 0.1.0.pre.beta2
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.
- checksums.yaml +8 -8
- data/README.md +7 -17
- data/lib/rack/templates/assets/css/profiler.css +1 -1
- data/lib/rack/templates/assets/css/rwpt.css +1 -1
- data/lib/rack/templates/assets/sass/_highlight.scss +63 -0
- data/lib/rack/templates/assets/sass/_variables.scss +1 -0
- data/lib/rack/templates/assets/sass/profiler.scss +1 -1
- data/lib/rack/templates/assets/sass/rwpt.scss +27 -9
- data/lib/rack/templates/async.erb +8 -8
- data/lib/rack/templates/panel/_sidebar.erb +3 -23
- data/lib/rack/templates/panel/index.erb +18 -6
- data/lib/rack/templates/panel/layout.erb +9 -5
- data/lib/rack/templates/panel/show.erb +25 -7
- data/lib/rack/templates/profiler.erb +15 -12
- data/lib/rack/web_profiler/collector/rack/request_collector.rb +38 -35
- data/lib/rack/web_profiler/collector/ruby_collector.rb +9 -7
- data/lib/rack/web_profiler/collector/time_collector.rb +2 -2
- data/lib/rack/web_profiler/collector/view.rb +44 -0
- data/lib/rack/web_profiler/collector.rb +29 -16
- data/lib/rack/web_profiler/config.rb +0 -10
- data/lib/rack/web_profiler/controller.rb +69 -64
- data/lib/rack/web_profiler/engine.rb +15 -6
- data/lib/rack/web_profiler/model/collection_record.rb +1 -0
- data/lib/rack/web_profiler/request.rb +5 -1
- data/lib/rack/web_profiler/router.rb +1 -1
- data/lib/rack/web_profiler/version.rb +1 -1
- data/lib/rack/web_profiler/view.rb +236 -0
- data/lib/rack/web_profiler.rb +34 -17
- data/rack-webprofiler.gemspec +1 -0
- metadata +19 -10
- data/lib/rack/web_profiler/auto_configure/rails.rb +0 -12
- data/lib/rack/web_profiler/collector/rails/active_record_collector.rb +0 -25
- data/lib/rack/web_profiler/collector/rails/logger_collector.rb +0 -22
- data/lib/rack/web_profiler/collector/rails/rails_collector.rb +0 -25
- data/lib/rack/web_profiler/collector/rails/request_collector.rb +0 -50
- data/lib/rack/web_profiler/collector/sinatra/request_collector.rb +0 -216
- data/lib/rack/web_profiler/collector/sinatra/sinatra_collector.rb +0 -25
- data/lib/rack/web_profiler/erb.rb +0 -9
@@ -56,7 +56,7 @@ module Rack
|
|
56
56
|
def serve_asset(path)
|
57
57
|
rf = Rack::File.new(::File.expand_path("../../templates/assets/", __FILE__))
|
58
58
|
request = @request.dup
|
59
|
-
request.env[PATH_INFO] = path
|
59
|
+
request.env[PATH_INFO] = "/#{path}"
|
60
60
|
|
61
61
|
path_info = Utils.unescape(request.env[PATH_INFO])
|
62
62
|
clean_path_info = Utils.clean_path_info(path_info)
|
@@ -0,0 +1,236 @@
|
|
1
|
+
require "erb"
|
2
|
+
require "rouge"
|
3
|
+
|
4
|
+
module Rack
|
5
|
+
class WebProfiler
|
6
|
+
# View
|
7
|
+
class View
|
8
|
+
def initialize(template, layout: nil, context: nil)
|
9
|
+
@template = template
|
10
|
+
@layout = layout
|
11
|
+
@context = context
|
12
|
+
end
|
13
|
+
|
14
|
+
def result(variables = {})
|
15
|
+
unless @template.nil?
|
16
|
+
templates = [read_template(@template)]
|
17
|
+
templates << read_template(@layout) unless @layout.nil?
|
18
|
+
|
19
|
+
content = templates.inject(nil) do |prev, temp|
|
20
|
+
render(temp, variables) { prev }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def context
|
26
|
+
@context ||= Context.new
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def read_template(template)
|
32
|
+
unless template.empty?
|
33
|
+
path = ::File.expand_path("../../templates/#{template}", __FILE__)
|
34
|
+
return ::File.read(path) if ::File.exist?(path)
|
35
|
+
end
|
36
|
+
template
|
37
|
+
end
|
38
|
+
|
39
|
+
def options
|
40
|
+
@options ||= {
|
41
|
+
:safe_level => nil,
|
42
|
+
:trim_mode => '%-',
|
43
|
+
:eoutvar => '@_erbout',
|
44
|
+
}
|
45
|
+
end
|
46
|
+
|
47
|
+
def render(str, variables = {})
|
48
|
+
opts = options
|
49
|
+
|
50
|
+
format_variables(variables).each do |name, value|
|
51
|
+
context.instance_variable_set("@#{name}", value)
|
52
|
+
end
|
53
|
+
|
54
|
+
context.instance_eval do
|
55
|
+
erb = ::ERB.new(str, *opts.values_at(:safe_level, :trim_mode, :eoutvar))
|
56
|
+
erb.result(binding).sub(/\A\n/, '')
|
57
|
+
end
|
58
|
+
# @todo better error when there is an ERB error.
|
59
|
+
end
|
60
|
+
|
61
|
+
def format_variables(v)
|
62
|
+
case v
|
63
|
+
when Binding
|
64
|
+
h = {}
|
65
|
+
v.eval("instance_variables").each do |k|
|
66
|
+
h[k.to_s.sub(/^@/, '')] = v.eval("instance_variable_get(:#{k})")
|
67
|
+
end
|
68
|
+
h
|
69
|
+
when Hash
|
70
|
+
v
|
71
|
+
else
|
72
|
+
{}
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
# CommonHelpers.
|
77
|
+
module CommonHelpers
|
78
|
+
def content_for(key, content = nil, &block)
|
79
|
+
block ||= proc { |*| content }
|
80
|
+
content_blocks[key.to_sym] << capture_later(&block)
|
81
|
+
end
|
82
|
+
|
83
|
+
def content_for?(key)
|
84
|
+
content_blocks[key.to_sym].any?
|
85
|
+
end
|
86
|
+
|
87
|
+
def yield_content(key, default = nil)
|
88
|
+
return default if content_blocks[key.to_sym].empty?
|
89
|
+
content_blocks[key.to_sym].map { |b| capture(&b) }.join
|
90
|
+
end
|
91
|
+
|
92
|
+
#
|
93
|
+
def partial(path, variables: nil)
|
94
|
+
return "" if path.nil?
|
95
|
+
|
96
|
+
variables ||= binding if variables.nil?
|
97
|
+
|
98
|
+
capture do
|
99
|
+
WebProfiler::View.new(path, context: self).result(variables)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
#
|
104
|
+
def h(obj)
|
105
|
+
case obj
|
106
|
+
when String
|
107
|
+
::ERB::Util.html_escape(obj)
|
108
|
+
else
|
109
|
+
::ERB::Util.html_escape(obj.inspect)
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
#
|
114
|
+
def highlight(code: nil, language: nil)
|
115
|
+
language = language.to_sym if language.is_a? String
|
116
|
+
|
117
|
+
case language
|
118
|
+
when :ruby
|
119
|
+
lexer = Rouge::Lexers::Ruby.new
|
120
|
+
when :json
|
121
|
+
lexer = Rouge::Lexers::Jsonnet.new
|
122
|
+
when :xml
|
123
|
+
lexer = Rouge::Lexers::XML.new
|
124
|
+
else
|
125
|
+
lexer = Rouge::Lexers::PlainText.new
|
126
|
+
end
|
127
|
+
|
128
|
+
code = capture(&Proc.new) if block_given?
|
129
|
+
|
130
|
+
formatter = Rouge::Formatters::HTML.new
|
131
|
+
formatter = Rouge::Formatters::HTMLPygments.new(formatter, css_class='highlight')
|
132
|
+
|
133
|
+
"<div class=\"highlight\">#{formatter.format(lexer.lex(code))}</div>"
|
134
|
+
end
|
135
|
+
|
136
|
+
def capture(&block)
|
137
|
+
@capture = nil
|
138
|
+
@_erbout, _buf_was = '', @_erbout
|
139
|
+
result = yield
|
140
|
+
@_erbout = _buf_was
|
141
|
+
result.strip.empty? && @capture ? @capture : result
|
142
|
+
end
|
143
|
+
|
144
|
+
private
|
145
|
+
|
146
|
+
def capture_later(&block)
|
147
|
+
proc { |*| @capture = capture(&block) }
|
148
|
+
end
|
149
|
+
|
150
|
+
def content_blocks
|
151
|
+
@content_blocks ||= Hash.new {|h,k| h[k] = [] }
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
# CollectorHelpers.
|
156
|
+
module CollectorHelpers
|
157
|
+
|
158
|
+
#
|
159
|
+
def collector_status(collector, collection)
|
160
|
+
collector_data_storage(collector, collection, :status)
|
161
|
+
end
|
162
|
+
|
163
|
+
#
|
164
|
+
def collector_datas(collector, collection)
|
165
|
+
collector_data_storage(collector, collection, :datas)
|
166
|
+
end
|
167
|
+
|
168
|
+
def collector_tab(collector, collection)
|
169
|
+
return nil unless is_collection_contains_datas_for_collector?(collection, collector)
|
170
|
+
|
171
|
+
c = collector_view_context(collector, collection)
|
172
|
+
c.tab_content
|
173
|
+
end
|
174
|
+
|
175
|
+
def collector_panel(collector, collection)
|
176
|
+
return nil unless is_collection_contains_datas_for_collector?(collection, collector)
|
177
|
+
|
178
|
+
c = collector_view_context(collector, collection)
|
179
|
+
c.panel_content
|
180
|
+
end
|
181
|
+
|
182
|
+
def collector_has_tab?(collector, collection)
|
183
|
+
collector_data_storage(collector, collection, :show_tab)
|
184
|
+
end
|
185
|
+
|
186
|
+
def collector_has_panel?(collector, collection)
|
187
|
+
collector_data_storage(collector, collection, :show_panel)
|
188
|
+
end
|
189
|
+
|
190
|
+
private
|
191
|
+
|
192
|
+
def collector_view_context(collector, collection)
|
193
|
+
collectors_view_context[collector.name] ||= begin
|
194
|
+
v = WebProfiler::Collector::View.new(collector.template)
|
195
|
+
v.result(collector: collector, collection: collection)
|
196
|
+
v.context
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
def collector_data_storage(collector, collection, key = nil)
|
201
|
+
return nil unless is_collection_contains_datas_for_collector?(collection, collector)
|
202
|
+
|
203
|
+
storage = collection.datas[collector.name.to_sym]
|
204
|
+
storage[key] if !key.nil? && storage.has_key?(key)
|
205
|
+
end
|
206
|
+
|
207
|
+
def is_valid_collector?(collector)
|
208
|
+
!collector.nil? \
|
209
|
+
&& collector.kind_of?(WebProfiler::Collector::Definition)
|
210
|
+
end
|
211
|
+
|
212
|
+
def is_valid_collection?(collection)
|
213
|
+
!collection.nil? \
|
214
|
+
&& collection.kind_of?(WebProfiler::Model::CollectionRecord)
|
215
|
+
end
|
216
|
+
|
217
|
+
def is_collection_contains_datas_for_collector?(collection, collector)
|
218
|
+
is_valid_collector?(collector) \
|
219
|
+
&& is_valid_collection?(collection) \
|
220
|
+
&& collection.datas.has_key?(collector.name.to_sym)
|
221
|
+
end
|
222
|
+
|
223
|
+
private
|
224
|
+
|
225
|
+
def collectors_view_context
|
226
|
+
@collectors_view_context ||= {}
|
227
|
+
end
|
228
|
+
end
|
229
|
+
|
230
|
+
class Context
|
231
|
+
include CommonHelpers
|
232
|
+
include CollectorHelpers
|
233
|
+
end
|
234
|
+
end
|
235
|
+
end
|
236
|
+
end
|
data/lib/rack/web_profiler.rb
CHANGED
@@ -12,10 +12,7 @@ module Rack
|
|
12
12
|
autoload :Model, "rack/web_profiler/model"
|
13
13
|
autoload :Request, "rack/web_profiler/request"
|
14
14
|
autoload :Router, "rack/web_profiler/router"
|
15
|
-
|
16
|
-
module AutoConfigure
|
17
|
-
autoload :Rails, "rack/web_profiler/auto_configure/rails"
|
18
|
-
end
|
15
|
+
autoload :View, "rack/web_profiler/view"
|
19
16
|
|
20
17
|
class << self
|
21
18
|
def config
|
@@ -38,8 +35,9 @@ module Rack
|
|
38
35
|
# @param app [Proc]
|
39
36
|
def initialize(app, tmp_dir: nil)
|
40
37
|
@app = app
|
41
|
-
|
38
|
+
|
42
39
|
WebProfiler.config.tmp_dir = tmp_dir unless tmp_dir.nil?
|
40
|
+
WebProfiler.config(&Proc.new) if block_given?
|
43
41
|
end
|
44
42
|
|
45
43
|
# Call
|
@@ -48,23 +46,42 @@ module Rack
|
|
48
46
|
#
|
49
47
|
# @return [Array]
|
50
48
|
def call(env)
|
51
|
-
|
52
|
-
|
49
|
+
begin
|
50
|
+
request = WebProfiler::Request.new(env)
|
51
|
+
request.start_runtime!
|
53
52
|
|
54
|
-
|
55
|
-
|
53
|
+
response = WebProfiler::Router.response_for(request)
|
54
|
+
return response.finish if response.is_a? Rack::Response
|
56
55
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
56
|
+
status, headers, body = @app.call(env)
|
57
|
+
rescue => e
|
58
|
+
process(request, body, status, headers, e)
|
59
|
+
raise
|
60
|
+
end
|
61
|
+
|
62
|
+
process(request, body, status, headers)
|
63
|
+
end
|
62
64
|
|
65
|
+
private
|
66
|
+
|
67
|
+
# Process the request.
|
68
|
+
#
|
69
|
+
# @param request [Rack::WebProfiler::Request]
|
70
|
+
# @param body
|
71
|
+
# @param status [Integer]
|
72
|
+
# @param headers [Hash]
|
73
|
+
# @param exception [Exception, nil]
|
74
|
+
#
|
75
|
+
# @return [Rack::Response]
|
76
|
+
def process(request, body, status, headers, exception = nil)
|
63
77
|
request.save_runtime!
|
64
78
|
|
65
|
-
|
79
|
+
unless exception.nil?
|
80
|
+
request.save_exception(exception)
|
81
|
+
WebProfiler::Engine.process_exception(request).finish
|
82
|
+
else
|
83
|
+
WebProfiler::Engine.process(request, body, status, headers).finish
|
84
|
+
end
|
66
85
|
end
|
67
86
|
end
|
68
87
|
end
|
69
|
-
|
70
|
-
require "rack/web_profiler/auto_configure/rails" if defined? Rails
|
data/rack-webprofiler.gemspec
CHANGED
@@ -36,6 +36,7 @@ Gem::Specification.new do |spec|
|
|
36
36
|
spec.add_dependency "docile", "~> 1.1"
|
37
37
|
spec.add_dependency "sequel", "~> 4"
|
38
38
|
spec.add_dependency "sqlite3", "~> 1.3"
|
39
|
+
spec.add_dependency "rouge", "~> 2.0"
|
39
40
|
|
40
41
|
spec.add_development_dependency "bundler", "~> 1.11"
|
41
42
|
spec.add_development_dependency "rake", "~> 10.0"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-webprofiler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.0.pre.
|
4
|
+
version: 0.1.0.pre.beta2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nicolas Brousse
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-08-
|
11
|
+
date: 2016-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ~>
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '1.3'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rouge
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ~>
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '2.0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ~>
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '2.0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: bundler
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -125,6 +139,7 @@ files:
|
|
125
139
|
- lib/rack/templates/assets/js/rwpt.js
|
126
140
|
- lib/rack/templates/assets/js/rwpt.min.js
|
127
141
|
- lib/rack/templates/assets/sass/_fonts.scss
|
142
|
+
- lib/rack/templates/assets/sass/_highlight.scss
|
128
143
|
- lib/rack/templates/assets/sass/_normalize.scss
|
129
144
|
- lib/rack/templates/assets/sass/_variables.scss
|
130
145
|
- lib/rack/templates/assets/sass/profiler.scss
|
@@ -136,31 +151,25 @@ files:
|
|
136
151
|
- lib/rack/templates/panel/show.erb
|
137
152
|
- lib/rack/templates/profiler.erb
|
138
153
|
- lib/rack/web_profiler.rb
|
139
|
-
- lib/rack/web_profiler/auto_configure/rails.rb
|
140
154
|
- lib/rack/web_profiler/collector.rb
|
141
155
|
- lib/rack/web_profiler/collector/debug_collector.rb
|
142
156
|
- lib/rack/web_profiler/collector/erb_collector.rb
|
143
157
|
- lib/rack/web_profiler/collector/performance_collector.rb
|
144
158
|
- lib/rack/web_profiler/collector/rack/rack_collector.rb
|
145
159
|
- lib/rack/web_profiler/collector/rack/request_collector.rb
|
146
|
-
- lib/rack/web_profiler/collector/rails/active_record_collector.rb
|
147
|
-
- lib/rack/web_profiler/collector/rails/logger_collector.rb
|
148
|
-
- lib/rack/web_profiler/collector/rails/rails_collector.rb
|
149
|
-
- lib/rack/web_profiler/collector/rails/request_collector.rb
|
150
160
|
- lib/rack/web_profiler/collector/ruby_collector.rb
|
151
|
-
- lib/rack/web_profiler/collector/sinatra/request_collector.rb
|
152
|
-
- lib/rack/web_profiler/collector/sinatra/sinatra_collector.rb
|
153
161
|
- lib/rack/web_profiler/collector/time_collector.rb
|
162
|
+
- lib/rack/web_profiler/collector/view.rb
|
154
163
|
- lib/rack/web_profiler/collectors.rb
|
155
164
|
- lib/rack/web_profiler/config.rb
|
156
165
|
- lib/rack/web_profiler/controller.rb
|
157
166
|
- lib/rack/web_profiler/engine.rb
|
158
|
-
- lib/rack/web_profiler/erb.rb
|
159
167
|
- lib/rack/web_profiler/model.rb
|
160
168
|
- lib/rack/web_profiler/model/collection_record.rb
|
161
169
|
- lib/rack/web_profiler/request.rb
|
162
170
|
- lib/rack/web_profiler/router.rb
|
163
171
|
- lib/rack/web_profiler/version.rb
|
172
|
+
- lib/rack/web_profiler/view.rb
|
164
173
|
- lib/rack/webprofiler.rb
|
165
174
|
- rack-webprofiler.gemspec
|
166
175
|
homepage: http://github.com/nicolas-brousse/rack-webprofiler
|
@@ -1,12 +0,0 @@
|
|
1
|
-
module Rack
|
2
|
-
# AutoConfigure::Rails
|
3
|
-
class WebProfiler::AutoConfigure::Rails
|
4
|
-
class Engine < ::Rails::Engine # :nodoc:
|
5
|
-
initializer "rack-web_profiler.configure_middleware" do |app|
|
6
|
-
app.middleware.use Rack::WebProfiler do |c|
|
7
|
-
c.tmp_dir = ::File.expand_path(::File.join(Rails.root, "tmp"), __FILE__)
|
8
|
-
end
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module Rack
|
2
|
-
class WebProfiler::Collector::Rails::ActiveRecordCollector
|
3
|
-
include Rack::WebProfiler::Collector::DSL
|
4
|
-
|
5
|
-
icon nil
|
6
|
-
|
7
|
-
collector_name "rails_activerecord"
|
8
|
-
position 1
|
9
|
-
|
10
|
-
collect do |_request, _response|
|
11
|
-
store :sql_requests, []
|
12
|
-
end
|
13
|
-
|
14
|
-
template __FILE__, type: :DATA
|
15
|
-
|
16
|
-
is_enabled? -> { defined? ActiveRecord }
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
# See: https://github.com/noahd1/oink/blob/master/lib/oink/middleware.rb#L46
|
21
|
-
|
22
|
-
__END__
|
23
|
-
<%# content_for :tab do %>
|
24
|
-
|
25
|
-
<%# end %>
|
@@ -1,22 +0,0 @@
|
|
1
|
-
module Rack
|
2
|
-
class WebProfiler::Collector::Rails::LoggerCollector
|
3
|
-
include Rack::WebProfiler::Collector::DSL
|
4
|
-
|
5
|
-
icon nil
|
6
|
-
|
7
|
-
collector_name "rails_logger"
|
8
|
-
position 1
|
9
|
-
|
10
|
-
collect do |_request, _response|
|
11
|
-
end
|
12
|
-
|
13
|
-
template __FILE__, type: :DATA
|
14
|
-
|
15
|
-
is_enabled? -> { defined? Rails }
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
__END__
|
20
|
-
<%# content_for :tab do %>
|
21
|
-
|
22
|
-
<%# end %>
|
@@ -1,25 +0,0 @@
|
|
1
|
-
module Rack
|
2
|
-
class WebProfiler::Collector::Rails::RailsCollector
|
3
|
-
include Rack::WebProfiler::Collector::DSL
|
4
|
-
|
5
|
-
icon nil
|
6
|
-
|
7
|
-
collector_name "rails"
|
8
|
-
position 1
|
9
|
-
|
10
|
-
collect do |_request, _response|
|
11
|
-
store :rails_version, Rails.version
|
12
|
-
store :rails_env, Rails.env
|
13
|
-
store :rails_doc_url, "http://api.rubyonrails.org/v#{Rails.version}/"
|
14
|
-
end
|
15
|
-
|
16
|
-
template __FILE__, type: :DATA
|
17
|
-
|
18
|
-
is_enabled? -> { defined? Rails }
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
__END__
|
23
|
-
<%# content_for :tab do %>
|
24
|
-
<%= data[:rails_version] %> | <%= data[:rails_env] %>
|
25
|
-
<%# end %>
|
@@ -1,50 +0,0 @@
|
|
1
|
-
module Rack
|
2
|
-
class WebProfiler::Collector::Rails::RequestCollector
|
3
|
-
include Rack::WebProfiler::Collector::DSL
|
4
|
-
|
5
|
-
icon nil
|
6
|
-
|
7
|
-
collector_name "rails_request"
|
8
|
-
position 1
|
9
|
-
|
10
|
-
collect do |request, response|
|
11
|
-
route, _matches, request_params = find_route(request)
|
12
|
-
|
13
|
-
store :request_path, request.path
|
14
|
-
store :request_method, request.request_method
|
15
|
-
store :request_params, request_params || {}
|
16
|
-
store :request_cookies, request.cookies
|
17
|
-
store :request_get, request.GET
|
18
|
-
store :request_post, request.POST
|
19
|
-
# store :rack_env, request.env.each { |k, v| v.to_s }
|
20
|
-
# puts request.env.map{ |k, v| k => v.to_s }
|
21
|
-
store :response_status, response.status
|
22
|
-
store :route_name, route.nil? ? nil : route.name
|
23
|
-
|
24
|
-
if response.successful?
|
25
|
-
status :success
|
26
|
-
elsif response.redirection?
|
27
|
-
status :warning
|
28
|
-
else
|
29
|
-
status :error
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
template __FILE__, type: :DATA
|
34
|
-
|
35
|
-
is_enabled? -> { defined? Rails }
|
36
|
-
|
37
|
-
class << self
|
38
|
-
def find_route(request)
|
39
|
-
Rails.application.routes.router.recognize(request) do |route, matches, params|
|
40
|
-
return [route, matches, params]
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
__END__
|
48
|
-
<%# content_for :tab do %>
|
49
|
-
<%= data[:response_status] %> | <%= data[:request_method] %> <%= data[:request_path] %>
|
50
|
-
<%# end %>
|