rack-bug 0.2.1 → 0.3.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.
- data/History.txt +21 -0
- data/README.md +115 -0
- data/Rakefile +6 -19
- data/Thorfile +109 -0
- data/lib/rack/bug.rb +4 -2
- data/lib/rack/bug/filtered_backtrace.rb +38 -0
- data/lib/rack/bug/options.rb +4 -4
- data/lib/rack/bug/panel.rb +12 -12
- data/lib/rack/bug/panel_app.rb +8 -8
- data/lib/rack/bug/panels/active_record_panel.rb +11 -11
- data/lib/rack/bug/panels/active_record_panel/activerecord_extensions.rb +3 -3
- data/lib/rack/bug/panels/cache_panel.rb +1 -1
- data/lib/rack/bug/panels/cache_panel/memcache_extension.rb +4 -4
- data/lib/rack/bug/panels/cache_panel/panel_app.rb +11 -11
- data/lib/rack/bug/panels/cache_panel/stats.rb +20 -20
- data/lib/rack/bug/panels/log_panel.rb +27 -10
- data/lib/rack/bug/panels/log_panel/rails_extension.rb +2 -2
- data/lib/rack/bug/panels/memory_panel.rb +8 -8
- data/lib/rack/bug/panels/rails_info_panel.rb +5 -5
- data/lib/rack/bug/panels/redis_panel.rb +3 -3
- data/lib/rack/bug/panels/redis_panel/redis_extension.rb +3 -3
- data/lib/rack/bug/panels/redis_panel/stats.rb +17 -13
- data/lib/rack/bug/panels/request_variables_panel.rb +7 -7
- data/lib/rack/bug/panels/sphinx_panel.rb +44 -0
- data/lib/rack/bug/panels/sphinx_panel/sphinx_extension.rb +13 -0
- data/lib/rack/bug/panels/sphinx_panel/stats.rb +96 -0
- data/lib/rack/bug/panels/sql_panel.rb +1 -1
- data/lib/rack/bug/panels/sql_panel/panel_app.rb +7 -7
- data/lib/rack/bug/panels/sql_panel/query.rb +13 -23
- data/lib/rack/bug/panels/sql_panel/sql_extension.rb +2 -2
- data/lib/rack/bug/panels/templates_panel.rb +1 -1
- data/lib/rack/bug/panels/templates_panel/actionview_extension.rb +1 -1
- data/lib/rack/bug/panels/templates_panel/rendering.rb +14 -14
- data/lib/rack/bug/panels/templates_panel/trace.rb +8 -8
- data/lib/rack/bug/panels/timer_panel.rb +10 -10
- data/lib/rack/bug/params_signature.rb +18 -18
- data/lib/rack/bug/public/__rack_bug__/bookmarklet.js +7 -5
- data/lib/rack/bug/render.rb +16 -16
- data/lib/rack/bug/toolbar.rb +39 -33
- data/lib/rack/bug/views/panels/log.html.erb +4 -6
- data/lib/rack/bug/views/panels/redis.html.erb +14 -0
- data/lib/rack/bug/views/panels/sphinx.html.erb +32 -0
- data/rack-bug.gemspec +102 -97
- data/spec/fixtures/config.ru +3 -1
- data/spec/fixtures/sample_app.rb +7 -6
- data/spec/rack/bug/panels/active_record_panel_spec.rb +6 -6
- data/spec/rack/bug/panels/cache_panel_spec.rb +46 -46
- data/spec/rack/bug/panels/log_panel_spec.rb +8 -7
- data/spec/rack/bug/panels/memory_panel_spec.rb +6 -6
- data/spec/rack/bug/panels/rails_info_panel_spec.rb +5 -5
- data/spec/rack/bug/panels/redis_panel_spec.rb +31 -19
- data/spec/rack/bug/panels/sql_panel_spec.rb +45 -45
- data/spec/rack/bug/panels/templates_panel_spec.rb +18 -18
- data/spec/rack/bug/panels/timer_panel_spec.rb +12 -12
- data/spec/rack/toolbar_spec.rb +34 -28
- data/spec/spec_helper.rb +19 -9
- metadata +44 -13
- data/README.rdoc +0 -29
- data/VERSION +0 -1
data/spec/rack/toolbar_spec.rb
CHANGED
@@ -5,32 +5,32 @@ describe Rack::Bug do
|
|
5
5
|
response = get "/"
|
6
6
|
response.should have_selector("div#rack_bug")
|
7
7
|
end
|
8
|
-
|
8
|
+
|
9
9
|
it "updates the Content-Length" do
|
10
10
|
response = get "/"
|
11
11
|
response["Content-Length"].should == response.body.size.to_s
|
12
12
|
end
|
13
|
-
|
13
|
+
|
14
14
|
it "serves the Rack::Bug assets under /__rack_bug__/" do
|
15
15
|
response = get "/__rack_bug__/bug.css"
|
16
16
|
response.should be_ok
|
17
17
|
end
|
18
|
-
|
18
|
+
|
19
19
|
it "modifies HTML responses with a charset" do
|
20
20
|
response = get "/", :content_type => "application/xhtml+xml; charset=utf-8"
|
21
21
|
response.should have_selector("div#rack_bug")
|
22
22
|
end
|
23
|
-
|
23
|
+
|
24
24
|
it "does not modify XMLHttpRequest responses" do
|
25
25
|
response = get "/", {}, { :xhr => true }
|
26
26
|
response.should_not have_selector("div#rack_bug")
|
27
27
|
end
|
28
|
-
|
28
|
+
|
29
29
|
it "modifies XHTML responses" do
|
30
30
|
response = get "/", :content_type => "application/xhtml+xml"
|
31
31
|
response.should have_selector("div#rack_bug")
|
32
32
|
end
|
33
|
-
|
33
|
+
|
34
34
|
it "does not modify non-HTML responses" do
|
35
35
|
response = get "/", :content_type => "text/csv"
|
36
36
|
response.should_not have_selector("div#rack_bug")
|
@@ -40,61 +40,67 @@ describe Rack::Bug do
|
|
40
40
|
response = get "/redirect"
|
41
41
|
response.body.should == ""
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
it "does not modify server errors" do
|
45
45
|
response = get "/error"
|
46
46
|
response.should_not have_selector("div#rack_bug")
|
47
47
|
end
|
48
|
-
|
48
|
+
|
49
49
|
context "configured to intercept redirects" do
|
50
50
|
it "inserts the Rack::Bug toolbar for redirects" do
|
51
51
|
response = get "/redirect", {}, "rack-bug.intercept_redirects" => true
|
52
|
-
response.should
|
52
|
+
response.should have_selector("div#rack_bug")
|
53
|
+
end
|
54
|
+
|
55
|
+
it "should provide a link to the target URL" do
|
56
|
+
response = get "/redirect", {}, "rack-bug.intercept_redirects" => true
|
57
|
+
response.should have_selector("a[href='/']")
|
53
58
|
end
|
54
59
|
end
|
55
|
-
|
60
|
+
|
56
61
|
context "configured with an IP address restriction" do
|
57
62
|
before do
|
58
|
-
|
63
|
+
rack_env "rack-bug.ip_masks", [IPAddr.new("127.0.0.1/255.255.255.0")]
|
59
64
|
end
|
60
|
-
|
65
|
+
|
61
66
|
it "inserts the Rack::Bug toolbar when the IP matches" do
|
62
|
-
response =
|
67
|
+
response = get_via_rack "/", {}, "REMOTE_ADDR" => "127.0.0.2"
|
63
68
|
response.should have_selector("div#rack_bug")
|
64
69
|
end
|
65
|
-
|
70
|
+
|
66
71
|
it "is disabled when the IP doesn't match" do
|
67
|
-
response =
|
72
|
+
response = get_via_rack "/", {}, "REMOTE_ADDR" => "128.0.0.1"
|
68
73
|
response.should_not have_selector("div#rack_bug")
|
69
74
|
end
|
70
|
-
|
75
|
+
|
71
76
|
it "doesn't use any panels" do
|
72
77
|
DummyPanel.should_not_receive(:new)
|
73
|
-
|
74
|
-
|
78
|
+
rack_env "rack-bug.panel_classes", [DummyPanel]
|
79
|
+
get_via_rack "/", {}, "REMOTE_ADDR" => "128.0.0.1"
|
75
80
|
end
|
76
81
|
end
|
77
|
-
|
82
|
+
|
78
83
|
context "configured with a password" do
|
79
84
|
before do
|
80
|
-
|
85
|
+
rack_env "rack-bug.password", "secret"
|
81
86
|
end
|
82
|
-
|
87
|
+
|
83
88
|
it "inserts the Rack::Bug toolbar when the password matches" do
|
84
89
|
sha = "545049d1c5e2a6e0dfefd37f9a9e0beb95241935"
|
85
|
-
|
90
|
+
set_cookie ["rack_bug_enabled=1", "rack_bug_password=#{sha}"]
|
91
|
+
response = get_via_rack "/"
|
86
92
|
response.should have_selector("div#rack_bug")
|
87
93
|
end
|
88
|
-
|
94
|
+
|
89
95
|
it "is disabled when the password doesn't match" do
|
90
|
-
response =
|
96
|
+
response = get_via_rack "/"
|
91
97
|
response.should_not have_selector("div#rack_bug")
|
92
98
|
end
|
93
|
-
|
99
|
+
|
94
100
|
it "doesn't use any panels" do
|
95
101
|
DummyPanel.should_not_receive(:new)
|
96
|
-
|
97
|
-
|
102
|
+
rack_env "rack-bug.panel_classes", [DummyPanel]
|
103
|
+
get_via_rack "/"
|
98
104
|
end
|
99
105
|
end
|
100
|
-
end
|
106
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -14,7 +14,7 @@ module Rails
|
|
14
14
|
def self.version
|
15
15
|
""
|
16
16
|
end
|
17
|
-
|
17
|
+
|
18
18
|
class Info
|
19
19
|
def self.properties
|
20
20
|
[]
|
@@ -29,25 +29,25 @@ end
|
|
29
29
|
|
30
30
|
Spec::Runner.configure do |config|
|
31
31
|
TIME_MS_REGEXP = /\d+\.\d{2}ms/
|
32
|
-
|
32
|
+
|
33
33
|
config.include Rack::Test::Methods
|
34
34
|
config.include Webrat::Matchers
|
35
|
-
|
35
|
+
|
36
36
|
config.before do
|
37
37
|
# This allows specs to record data outside the request
|
38
38
|
Rack::Bug.enable
|
39
|
-
|
39
|
+
|
40
40
|
# Set the cookie that triggers Rack::Bug under normal conditions
|
41
|
-
|
41
|
+
set_cookie "rack_bug_enabled=1"
|
42
42
|
end
|
43
|
-
|
43
|
+
|
44
44
|
def app
|
45
45
|
Rack::Builder.new do
|
46
46
|
use Rack::Bug
|
47
47
|
run SampleApp.new
|
48
48
|
end
|
49
49
|
end
|
50
|
-
|
50
|
+
|
51
51
|
def have_row(container, key, value = nil)
|
52
52
|
simple_matcher("contain row") do |response|
|
53
53
|
if value
|
@@ -59,7 +59,7 @@ Spec::Runner.configure do |config|
|
|
59
59
|
end
|
60
60
|
end
|
61
61
|
end
|
62
|
-
|
62
|
+
|
63
63
|
def have_heading(text)
|
64
64
|
simple_matcher("have heading") do |response|
|
65
65
|
response.should have_selector("#rack_bug_toolbar li") do |heading|
|
@@ -67,4 +67,14 @@ Spec::Runner.configure do |config|
|
|
67
67
|
end
|
68
68
|
end
|
69
69
|
end
|
70
|
-
|
70
|
+
|
71
|
+
def rack_env(key, value)
|
72
|
+
@rack_env ||= {}
|
73
|
+
@rack_env[key] = value
|
74
|
+
end
|
75
|
+
|
76
|
+
def get_via_rack(uri, params = {}, env = {}, &block)
|
77
|
+
env = env.merge(@rack_env) if @rack_env
|
78
|
+
get(uri, params, env, &block)
|
79
|
+
end
|
80
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-bug
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 19
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 3
|
9
|
+
- 0
|
10
|
+
version: 0.3.0
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Bryan Helmkamp
|
@@ -9,10 +15,24 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date:
|
18
|
+
date: 2010-05-28 00:00:00 -04:00
|
13
19
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
22
|
+
name: rack
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 15
|
30
|
+
segments:
|
31
|
+
- 1
|
32
|
+
- 0
|
33
|
+
version: "1.0"
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
16
36
|
description:
|
17
37
|
email: bryan@brynary.com
|
18
38
|
executables: []
|
@@ -20,16 +40,17 @@ executables: []
|
|
20
40
|
extensions: []
|
21
41
|
|
22
42
|
extra_rdoc_files:
|
43
|
+
- README.md
|
23
44
|
- MIT-LICENSE.txt
|
24
|
-
- README.rdoc
|
25
45
|
files:
|
26
46
|
- .gitignore
|
27
47
|
- History.txt
|
28
48
|
- MIT-LICENSE.txt
|
29
|
-
- README.
|
49
|
+
- README.md
|
30
50
|
- Rakefile
|
31
|
-
-
|
51
|
+
- Thorfile
|
32
52
|
- lib/rack/bug.rb
|
53
|
+
- lib/rack/bug/filtered_backtrace.rb
|
33
54
|
- lib/rack/bug/options.rb
|
34
55
|
- lib/rack/bug/panel.rb
|
35
56
|
- lib/rack/bug/panel_app.rb
|
@@ -47,6 +68,9 @@ files:
|
|
47
68
|
- lib/rack/bug/panels/redis_panel/redis_extension.rb
|
48
69
|
- lib/rack/bug/panels/redis_panel/stats.rb
|
49
70
|
- lib/rack/bug/panels/request_variables_panel.rb
|
71
|
+
- lib/rack/bug/panels/sphinx_panel.rb
|
72
|
+
- lib/rack/bug/panels/sphinx_panel/sphinx_extension.rb
|
73
|
+
- lib/rack/bug/panels/sphinx_panel/stats.rb
|
50
74
|
- lib/rack/bug/panels/sql_panel.rb
|
51
75
|
- lib/rack/bug/panels/sql_panel/panel_app.rb
|
52
76
|
- lib/rack/bug/panels/sql_panel/query.rb
|
@@ -76,6 +100,7 @@ files:
|
|
76
100
|
- lib/rack/bug/views/panels/rails_info.html.erb
|
77
101
|
- lib/rack/bug/views/panels/redis.html.erb
|
78
102
|
- lib/rack/bug/views/panels/request_variables.html.erb
|
103
|
+
- lib/rack/bug/views/panels/sphinx.html.erb
|
79
104
|
- lib/rack/bug/views/panels/sql.html.erb
|
80
105
|
- lib/rack/bug/views/panels/templates.html.erb
|
81
106
|
- lib/rack/bug/views/panels/timer.html.erb
|
@@ -104,26 +129,32 @@ homepage: http://github.com/brynary/rack-bug
|
|
104
129
|
licenses: []
|
105
130
|
|
106
131
|
post_install_message:
|
107
|
-
rdoc_options:
|
108
|
-
|
132
|
+
rdoc_options: []
|
133
|
+
|
109
134
|
require_paths:
|
110
135
|
- lib
|
111
136
|
required_ruby_version: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
112
138
|
requirements:
|
113
139
|
- - ">="
|
114
140
|
- !ruby/object:Gem::Version
|
141
|
+
hash: 3
|
142
|
+
segments:
|
143
|
+
- 0
|
115
144
|
version: "0"
|
116
|
-
version:
|
117
145
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
146
|
+
none: false
|
118
147
|
requirements:
|
119
148
|
- - ">="
|
120
149
|
- !ruby/object:Gem::Version
|
150
|
+
hash: 3
|
151
|
+
segments:
|
152
|
+
- 0
|
121
153
|
version: "0"
|
122
|
-
version:
|
123
154
|
requirements: []
|
124
155
|
|
125
|
-
rubyforge_project:
|
126
|
-
rubygems_version: 1.3.
|
156
|
+
rubyforge_project: rack-bug
|
157
|
+
rubygems_version: 1.3.7
|
127
158
|
signing_key:
|
128
159
|
specification_version: 3
|
129
160
|
summary: Debugging toolbar for Rack applications implemented as middleware
|
data/README.rdoc
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
Usage:
|
2
|
-
|
3
|
-
script/plugin install git://github.com/brynary/rack-bug.git
|
4
|
-
|
5
|
-
# config/environments/development.rb
|
6
|
-
config.middleware.use "Rack::Bug"
|
7
|
-
|
8
|
-
# add bookmarklet to browser
|
9
|
-
open http://RAILS_APP/__rack_bug__/bookmarklet.html
|
10
|
-
|
11
|
-
Notes:
|
12
|
-
|
13
|
-
To use rack-bug with hoptoad, you need to stub hoptoad from trying to serialize the environment variables
|
14
|
-
that rack-bug uses like so:
|
15
|
-
|
16
|
-
HoptoadNotifier.configure do |config|
|
17
|
-
config.environment_filters << 'rack-bug.*'
|
18
|
-
end
|
19
|
-
|
20
|
-
|
21
|
-
Thanks to:
|
22
|
-
|
23
|
-
Django debug toolbar
|
24
|
-
Rails footnotes
|
25
|
-
Rack's ShowException middleware
|
26
|
-
Oink
|
27
|
-
Rack::Cache
|
28
|
-
|
29
|
-
|
data/VERSION
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
0.2.1
|