fiveruns_tuneup 0.8.3 → 0.8.4

Sign up to get free protection for your applications and to get access to all the features.
data/History.rdoc CHANGED
@@ -1,3 +1,7 @@
1
1
  = History
2
2
 
3
+ * v0.8.4. Fixes for forgery protection breaking the panel, significant work on display issues including CSS isolation concerns, and support for environmental configuration. Support for Rails 2.1 development mode as a gem dependency.
4
+
5
+ * v0.8.3. Beta release.
6
+
3
7
  * v0.8.1. First gem package with basic functionality
data/Manifest CHANGED
@@ -21,6 +21,7 @@ init.rb
21
21
  install.rb
22
22
  lib/bumpspark_helper.rb
23
23
  lib/fiveruns/tuneup/asset_tags.rb
24
+ lib/fiveruns/tuneup/configuration.rb
24
25
  lib/fiveruns/tuneup/custom_methods.rb
25
26
  lib/fiveruns/tuneup/environment.rb
26
27
  lib/fiveruns/tuneup/instrumentation/action_controller/base.rb
data/README.rdoc CHANGED
@@ -1,4 +1,4 @@
1
- = FiveRuns TuneUp Plugin
1
+ = FiveRuns TuneUp Plugin (panel)
2
2
 
3
3
  == Requirements
4
4
 
@@ -9,14 +9,42 @@
9
9
 
10
10
  Display call stack information on Rails requests.
11
11
 
12
- THIS IS A BETA RELEASE; the normal disclaimers apply.
12
+ *THIS IS A BETA RELEASE*; the normal disclaimers apply.
13
+
14
+ == Installation
15
+
16
+ Install the gem:
17
+
18
+ sudo gem install fiveruns_tuneup
19
+
20
+ For Rails 2.0, install the plugin into +vendor/plugins+:
21
+
22
+ fiveruns_tuneup /path/to/app
23
+ (or you can clone the GitHub repo into vendor/plugins)
24
+
25
+ For Rails 2.1, you can use it as a gem dependency instead; in your +environment.rb+:
26
+
27
+ config.gem 'fiveruns_tuneup'
28
+
29
+ Note: At the current time (as of the 2.1 release) there are issues in Rails that prevent
30
+ the plugin running as an unpacked gem (via +rake gems:unpack+).
31
+
32
+ == Configuration
33
+
34
+ By default, TuneUp only displays the panel and instruments your application
35
+ in the +development+ environment. If you'd like to configure it to run in the +production+
36
+ environment (for testing), you can create a +RAILS_ROOT/config/tuneup.rb+ file:
37
+
38
+ Fiveruns::Tuneup.config do |config|
39
+ config.environments << :production
40
+ end
41
+
42
+ Note: The TuneUp panel does NOT currently work *in production mode* for Rails 2.1 apps, due to some internal
43
+ changes to the way routes are handled. This will be addressed in a future TuneUp panel release.
13
44
 
14
45
  == Known Issues
15
46
 
16
- The following issues have been seen from time to time on some apps:
17
- * Issues with fixed/absolute positioned elements overlapping the panel
18
- and/or being pushed down too far.
19
- * Panel not showing up on the `root' route.
47
+ See the notes at http://github.com/fiveruns/fiveruns_tuneup/wikis/known-issues
20
48
 
21
49
  == License
22
50
 
File without changes
File without changes
File without changes
@@ -10,17 +10,63 @@ TuneUp.Spinner = {
10
10
  stop: function() { $('tuneup_spinner').hide(); }
11
11
  }
12
12
 
13
+ TuneUp.adjustElement = function(e) {
14
+ var top = parseFloat(e.getStyle('top') || 0);
15
+ var adjust = 0;
16
+
17
+ if ($('tuneup-flash').hasClassName('tuneup-show')) {
18
+ if (!e.hasClassName('tuneup-flash-adjusted')) {
19
+ adjust = 27;
20
+ e.addClassName('tuneup-flash-adjusted');
21
+ }
22
+ }
23
+ else {
24
+ if (e.hasClassName('tuneup-flash-adjusted')) {
25
+ adjust = -27;
26
+ e.removeClassName('tuneup-flash-adjusted');
27
+ }
28
+ }
29
+
30
+ if (e.hasClassName('tuneup-adjusted'))
31
+ e.style.top = (top + adjust) + 'px';
32
+ else {
33
+ e.style.top = (top + 50 + adjust) + 'px';
34
+ e.addClassName('tuneup-adjusted')
35
+ }
36
+ }
37
+
38
+ TuneUp.adjustFixedElements = function(e) {
39
+ document.body.descendants().each(function(e) {
40
+ var pos = e.getStyle('position');
41
+ if (pos == 'fixed') {
42
+ TuneUp.adjustElement(e);
43
+ }
44
+ });
45
+ }
46
+
47
+ TuneUp.adjustAbsoluteElements = function(e) {
48
+ e.immediateDescendants().each(function (e) {
49
+ var pos = e.getStyle('position');
50
+ if (pos == 'absolute') {
51
+ TuneUp.adjustElement(e);
52
+ TuneUp.adjustAbsoluteElements(e);
53
+ }
54
+ else if (pos == 'relative') {
55
+ // do nothing
56
+ }
57
+ else {
58
+ TuneUp.adjustAbsoluteElements(e);
59
+ }
60
+ });
61
+ }
13
62
 
14
63
  Event.observe(window, 'load', function() {
15
- $A($(document.body).descendants()).each(function(e){
16
- var pos = Element.getStyle(e, 'position');
17
- if(pos == 'absolute' || pos == 'fixed') {
18
- var top = parseFloat(Element.getStyle(e, 'top') || 0);
19
- e.style.top = (top + 50) + 'px';
20
- }
21
- })
22
- new Insertion.Top(document.body, "<div id='tuneup'><h1>FiveRuns TuneUp</h1><img id='tuneup_spinner' style='display:none' src='/images/tuneup/spinner.gif' alt=''/><div id='tuneup-content'></div></div><div id='tuneup-flash'></div>");
23
- new Ajax.Request('/tuneup?uri=' + encodeURIComponent(document.location.href),
64
+ new Insertion.Top(document.body, "<div id='tuneup'><h1>FiveRuns TuneUp</h1><img id='tuneup_spinner' style='display:none' src='/images/tuneup/spinner.gif' alt=''/><div id='tuneup-content' style='display:block'></div></div><div id='tuneup-flash'></div>");
65
+
66
+ TuneUp.adjustAbsoluteElements(document.body);
67
+ TuneUp.adjustFixedElements();
68
+
69
+ new Ajax.Request('/tuneup?uri=' + encodeURIComponent(document.location.href),
24
70
  {
25
71
  asynchronous:true,
26
72
  evalScripts:true,
@@ -28,3 +74,5 @@ Event.observe(window, 'load', function() {
28
74
  onComplete: TuneUp.Spinner.stop
29
75
  });
30
76
  });
77
+
78
+
@@ -43,7 +43,7 @@ version: 2.5.1
43
43
  /* END YUI RESET */
44
44
 
45
45
  /* Styling */
46
- #tuneup { height: 50px; color: #ddd; background: #000 url(/images/tuneup/head.gif) 0 100% repeat-x; padding: 0; font-family: "Helvetica Neue", "Lucida Grande", Calibri, Helvetica, Verdana, sans-serif; font-size: 12px; }
46
+ #tuneup { position: relative; height: 50px; color: #ddd; background: #000 url(/images/tuneup/head.gif) 0 100% repeat-x; padding: 0; font-family: "Helvetica Neue", "Lucida Grande", Calibri, Helvetica, Verdana, sans-serif; font-size: 12px; }
47
47
  #tuneup #tuneup-content { margin-left: 170px; color: #ddd; height: 50px; vertical-align: middle; text-align: left; }
48
48
  #tuneup #tuneup-root-bar { float: right; }
49
49
  #tuneup a, #tuneup a:visited, #tuneup a:active { color: #fff; text-decoration: underline; font-size: 12px; border: 0; }
@@ -52,7 +52,7 @@ version: 2.5.1
52
52
  #tuneup label { display: inline; font-size: 13px; font-weight: normal; color: #CCC; padding: 2px 2px; }
53
53
  #tuneup label, #tuneup button { margin: 0 6px 0 20px; }
54
54
 
55
- #tuneup #tuneup-content p.full { height: 50px; line-height: 50px; vertical-align: middle; padding: 0; }
55
+ #tuneup #tuneup-content p.tuneup-full { height: 50px; line-height: 50px; vertical-align: middle; padding: 0; background-color: transparent; }
56
56
  #tuneup .small { font-size: 10px; color: #666; padding: 0 8px 0 8px;}
57
57
 
58
58
 
@@ -84,13 +84,13 @@ version: 2.5.1
84
84
  -moz-border-radius: 6px;
85
85
  }
86
86
 
87
- #tuneup #tuneup-details ul dl { margin: 0; padding: 0; width: 700; overflow: hidden; }
88
- #tuneup #tuneup-details ul dt { float: left; overflow: hidden; height: 20px; margin: 0 10px 0 0; padding: 0; color: #ddd; font-size: 12px; text-transform: none; font-weight: inherit;}
89
- #tuneup #tuneup-details ul dt p { }
90
- #tuneup #tuneup-details ul dt strong { color: #fff; font-weight: bold; }
91
- #tuneup #tuneup-details ul dt span.time { float: right; text-transform: none; font-size: 11px; font-weight: normal; margin-right: 0px; }
87
+ #tuneup ul#tuneup-details ul.tuneup-step-info { margin: 0; padding: 0; }
88
+ #tuneup ul#tuneup-details li.tuneup-title { float: left; overflow: hidden; height: 20px; margin: 0 10px 0 0; padding: 0; color: #ddd; font-size: 12px; text-transform: none; font-weight: inherit;}
89
+ #tuneup ul#tuneup-details li.tuneup-title p { background-color: transparent; }
90
+ #tuneup ul#tuneup-details li.tuneup-title strong { color: #fff; font-weight: bold; }
91
+ #tuneup ul#tuneup-details li.tuneup-title span.time { float: right; text-transform: none; font-size: 11px; font-weight: normal; margin-right: 0px; }
92
92
 
93
- #tuneup #tuneup-details ul dt a, #tuneup-details ul dt a:active, #tuneup-details ul dt a:visited {
93
+ #tuneup ul#tuneup-details li.tuneup-title a, ul#tuneup-details li.tuneup-title a:active, ul#tuneup-details li.tuneup-title a:visited {
94
94
  color: inherit;
95
95
  font-size: inherit;
96
96
  font-weight: inherit;
@@ -101,56 +101,45 @@ version: 2.5.1
101
101
 
102
102
  #tuneup .tuneup-bar li { text-align: center; }
103
103
 
104
- #tuneup #tuneup-details li.fiveruns_tuneup_step { padding-left: 4px; background: url(/images/tuneup/pip.gif) 4px 0 no-repeat; }
104
+ #tuneup #tuneup-details li.fiveruns_tuneup_step { clear: left; padding: 0 0 0 4px; background: url(/images/tuneup/pip.gif) 4px 0 no-repeat; margin: 2px 0; }
105
105
  #tuneup #tuneup-details li.fiveruns_tuneup_step.with-children { background: url(/images/tuneup/arrows.gif) 4px 0 no-repeat;}
106
106
  #tuneup #tuneup-details li.fiveruns_tuneup_step.with-children.tuneup-opened { background: url(/images/tuneup/arrows.gif) 4px -20px no-repeat; }
107
107
 
108
- #tuneup #tuneup-details ul { margin: 0; padding: 0; }
109
- #tuneup #tuneup-details ul span.time { margin-right: 12px; }
108
+ #tuneup ul#tuneup-details span.time { margin-right: 12px; }
110
109
 
111
110
  #tuneup li .children { display: none; }
112
111
 
113
112
  #tuneup_spinner { position: absolute; z-index: 11002; top: 15px; right: 30px; }
114
113
 
115
- #tuneup #tuneup-details ul dd {
116
- margin: 0 0 0 410px;
114
+ #tuneup ul#tuneup-details li.tuneup-detail-bar {
115
+ float:left;
116
+ margin: 0 0 0 0;
117
117
  height: 20px;
118
+ width: 300px;
118
119
  padding: 0;
119
120
  }
120
- #tuneup #tuneup-details ul dt { padding-left: 16px; width: 400px; clear: left; }
121
+ #tuneup ul#tuneup-details li.tuneup-title { padding-left: 16px; width: 400px; }
121
122
 
122
- #tuneup #tuneup-details ul ul.fiveruns_tuneup_children { background: #111; }
123
- #tuneup #tuneup-details ul ul dd { margin-left: 406px; }
124
- #tuneup #tuneup-details ul ul dt { width: 396px; }
123
+ #tuneup ul#tuneup-details ul.fiveruns_tuneup_children { background: #111; }
124
+ #tuneup ul#tuneup-details ul li.tuneup-title { width: 396px; }
125
125
 
126
- #tuneup #tuneup-details ul ul ul.fiveruns_tuneup_children { background: #222;}
127
- #tuneup #tuneup-details ul ul ul dd { margin-left: 402px; }
128
- #tuneup #tuneup-details ul ul ul dt { width: 392px; }
126
+ #tuneup ul#tuneup-details ul ul.fiveruns_tuneup_children { background: #222;}
127
+ #tuneup ul#tuneup-details ul ul li.tuneup-title { width: 392px; }
129
128
 
129
+ #tuneup ul#tuneup-details ul ul ul.fiveruns_tuneup_children { background: #333;}
130
+ #tuneup ul#tuneup-details ul ul ul li.tuneup-title { width: 388px; }
130
131
 
131
- #tuneup #tuneup-details ul ul ul ul.fiveruns_tuneup_children { background: #333;}
132
- #tuneup #tuneup-details ul ul ul ul dd { margin-left: 398px; }
133
- #tuneup #tuneup-details ul ul ul ul dt { width: 388px; }
132
+ #tuneup ul#tuneup-details ul ul ul ul.fiveruns_tuneup_children { background: #444;}
133
+ #tuneup ul#tuneup-details ul ul ul ul li.tuneup-title { width: 384px; }
134
134
 
135
+ #tuneup ul#tuneup-details ul ul ul ul ul.fiveruns_tuneup_children { background: #555;}
136
+ #tuneup ul#tuneup-details ul ul ul ul ul li.tuneup-title { width: 380px; }
135
137
 
136
- #tuneup #tuneup-details ul ul ul ul ul.fiveruns_tuneup_children { background: #444;}
137
- #tuneup #tuneup-details ul ul ul ul ul dd { margin-left: 394px; }
138
- #tuneup #tuneup-details ul ul ul ul ul dt { width: 384px; }
138
+ #tuneup ul#tuneup-details ul ul ul ul ul ul.fiveruns_tuneup_children { background: #666;}
139
139
 
140
-
141
- #tuneup #tuneup-details ul ul ul ul ul ul.fiveruns_tuneup_children { background: #555;}
142
- #tuneup #tuneup-details ul ul ul ul ul ul dd { margin-left: 390px; }
143
- #tuneup #tuneup-details ul ul ul ul ul ul dt { width: 380px; }
144
-
145
- #tuneup #tuneup-details ul ul ul ul ul ul ul.fiveruns_tuneup_children { background: #666;}
146
- #tuneup #tuneup-details ul ul ul ul ul ul ul dd { margin-left: 386px; }
147
- #tuneup #tuneup-details ul ul ul ul ul ul ul dt { width: 376px; }
148
-
149
- #tuneup #tuneup-details ul ul ul ul ul ul ul ul dd { margin-left: 382px; }
150
- #tuneup #tuneup-details ul ul ul ul ul ul ul ul dt { width: 372px; }
151
-
152
- #tuneup #tuneup-details ul ul ul ul ul ul ul ul ul dd { margin-left: 378px; }
153
- #tuneup #tuneup-details ul ul ul ul ul ul ul ul ul dt { width: 368px; }
140
+ #tuneup ul#tuneup-details ul ul ul ul ul ul li.tuneup-title { width: 376px; }
141
+ #tuneup ul#tuneup-details ul ul ul ul ul ul ul li.tuneup-title { width: 372px; }
142
+ #tuneup ul#tuneup-details ul ul ul ul ul ul ul ul li.tuneup-title { width: 368px; }
154
143
 
155
144
  #tuneup-flash { display: none; text-align: left; font-size: 12px; padding: 5px; color: #000; border-bottom: 1px #000 solid; }
156
145
  #tuneup-flash emph { color: #666; font-style: italic; }
@@ -161,8 +150,8 @@ version: 2.5.1
161
150
  #tuneup-flash.tuneup-error p { background: url(/images/tuneup/warning.gif) 0 50% no-repeat; }
162
151
  #tuneup-flash.tuneup-notice { padding-left: 0; background: #E4FFDE; }
163
152
 
164
- #tuneup #tuneup-details .tuneup-bar { width: 300px; height: 20px; padding: 0; margin: 0 !important; overflow: hidden; }
165
- #tuneup #tuneup-details .tuneup-bar li { height: 18px; padding: 0; margin: 0 !important; }
153
+ #tuneup #tuneup-details .tuneup-bar { width: 300px; height: 20px; padding: 0; margin: 0 !important; }
154
+ #tuneup #tuneup-details .tuneup-bar li { height: 20px; padding: 0; margin: 0 !important; }
166
155
 
167
156
  #tuneup #tuneup-details a.tuneup-sql { color: 001999; margin-left: 10px; }
168
157
  #tuneup #tuneup-details a img { border: 0; }
@@ -175,7 +164,7 @@ version: 2.5.1
175
164
  #tuneup th { background: #000; padding: 4px; color: #fff; font-size: 12px; text-align: left; border: 0; font-weight: bold; border: 1px #333 solid; border-left: 0; border-top: 0; }
176
165
  #tuneup td { background: #111; padding: 4px; color: #ddd; font-size: 12px; text-align: left; border: 0; }
177
166
 
178
- #tuneup #tuneup-schema { display: none; position: absolute; top: 46px; right: 735px; padding: 9px; text-align: left; z-index: 10998; background: #000; opacity: 0.85; color: #ddd; overflow: hidden; -moz-border-radius: 6px; }
167
+ #tuneup #tuneup-schema { display: none; position: absolute; top: 46px; right: 757px; padding: 9px; text-align: left; z-index: 10998; background: #000; opacity: 0.85; color: #ddd; overflow: hidden; -moz-border-radius: 6px; }
179
168
 
180
169
  #tuneup h1 {
181
170
  background: transparent url(/images/tuneup/logo_clear.png) center left no-repeat;
@@ -202,4 +191,6 @@ version: 2.5.1
202
191
  #tuneup #tuneup-schema td { background: #000; font-family: monospace; color: #ddd; padding: 1px; font-size: 11px; }
203
192
  #tuneup #tuneup-trend { float: right; width: 100px; }
204
193
 
205
- #tuneup button { background: none; border: 0; margin: 0; padding: 0; height: 50px; line-height: 50px; vertical-align: middle; }
194
+ #tuneup button { background: none; border: 0; margin: 0; padding: 0; height: 50px; line-height: 50px; vertical-align: middle; }
195
+
196
+ a.tuneup-step-link { padding-left: 20px; margin-left: -20px; outline: none;}
data/bin/fiveruns_tuneup CHANGED
File without changes
@@ -1,28 +1,28 @@
1
1
 
2
- # Gem::Specification for Fiveruns_tuneup-0.8.3
2
+ # Gem::Specification for Fiveruns_tuneup-0.8.4
3
3
  # Originally generated by Echoe
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = %q{fiveruns_tuneup}
7
- s.version = "0.8.3"
7
+ s.version = "0.8.4"
8
8
 
9
9
  s.specification_version = 2 if s.respond_to? :specification_version=
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
12
  s.authors = ["FiveRuns Development Team"]
13
- s.date = %q{2008-05-30}
13
+ s.date = %q{2008-06-01}
14
14
  s.default_executable = %q{fiveruns_tuneup}
15
15
  s.description = %q{Instrumentation for the FiveRuns TuneUp product.}
16
16
  s.email = %q{dev@fiveruns.com}
17
17
  s.executables = ["fiveruns_tuneup"]
18
- s.extra_rdoc_files = ["bin/fiveruns_tuneup", "lib/bumpspark_helper.rb", "lib/fiveruns/tuneup/asset_tags.rb", "lib/fiveruns/tuneup/custom_methods.rb", "lib/fiveruns/tuneup/environment.rb", "lib/fiveruns/tuneup/instrumentation/action_controller/base.rb", "lib/fiveruns/tuneup/instrumentation/action_view/base.rb", "lib/fiveruns/tuneup/instrumentation/active_record/base.rb", "lib/fiveruns/tuneup/instrumentation/cgi/session.rb", "lib/fiveruns/tuneup/instrumentation/utilities.rb", "lib/fiveruns/tuneup/multipart.rb", "lib/fiveruns/tuneup/runs.rb", "lib/fiveruns/tuneup/schema.rb", "lib/fiveruns/tuneup/step.rb", "lib/fiveruns/tuneup/urls.rb", "lib/fiveruns/tuneup/version.rb", "lib/fiveruns/tuneup.rb", "lib/fiveruns_tuneup.rb", "lib/tuneup_config.rb", "lib/tuneup_controller.rb", "lib/tuneup_helper.rb", "README.rdoc", "tasks/assets.rake"]
19
- s.files = ["assets/images/arrows.gif", "assets/images/edit.png", "assets/images/fade.png", "assets/images/fade_down.png", "assets/images/head.gif", "assets/images/logo.gif", "assets/images/logo_clear.png", "assets/images/magnify.png", "assets/images/pip.gif", "assets/images/pointer.gif", "assets/images/schema.png", "assets/images/signin.gif", "assets/images/spinner.gif", "assets/images/warning.gif", "assets/javascripts/prototype.js", "assets/javascripts/tuneup.js", "assets/stylesheets/tuneup.css", "bin/fiveruns_tuneup", "History.rdoc", "init.rb", "install.rb", "lib/bumpspark_helper.rb", "lib/fiveruns/tuneup/asset_tags.rb", "lib/fiveruns/tuneup/custom_methods.rb", "lib/fiveruns/tuneup/environment.rb", "lib/fiveruns/tuneup/instrumentation/action_controller/base.rb", "lib/fiveruns/tuneup/instrumentation/action_view/base.rb", "lib/fiveruns/tuneup/instrumentation/active_record/base.rb", "lib/fiveruns/tuneup/instrumentation/cgi/session.rb", "lib/fiveruns/tuneup/instrumentation/utilities.rb", "lib/fiveruns/tuneup/multipart.rb", "lib/fiveruns/tuneup/runs.rb", "lib/fiveruns/tuneup/schema.rb", "lib/fiveruns/tuneup/step.rb", "lib/fiveruns/tuneup/urls.rb", "lib/fiveruns/tuneup/version.rb", "lib/fiveruns/tuneup.rb", "lib/fiveruns_tuneup.rb", "lib/tuneup_config.rb", "lib/tuneup_controller.rb", "lib/tuneup_helper.rb", "Manifest", "rails/init.rb", "Rakefile", "README.rdoc", "tasks/assets.rake", "test/test_helper.rb", "test/tuneup_test.rb", "uninstall.rb", "views/tuneup/_data.html.erb", "views/tuneup/_flash.html.erb", "views/tuneup/_link.html.erb", "views/tuneup/_schema.html.erb", "views/tuneup/_sql.html.erb", "views/tuneup/_step.html.erb", "views/tuneup/panel/_registered.html.erb", "views/tuneup/panel/_unregistered.html.erb", "fiveruns_tuneup.gemspec"]
18
+ s.extra_rdoc_files = ["bin/fiveruns_tuneup", "lib/bumpspark_helper.rb", "lib/fiveruns/tuneup/asset_tags.rb", "lib/fiveruns/tuneup/configuration.rb", "lib/fiveruns/tuneup/custom_methods.rb", "lib/fiveruns/tuneup/environment.rb", "lib/fiveruns/tuneup/instrumentation/action_controller/base.rb", "lib/fiveruns/tuneup/instrumentation/action_view/base.rb", "lib/fiveruns/tuneup/instrumentation/active_record/base.rb", "lib/fiveruns/tuneup/instrumentation/cgi/session.rb", "lib/fiveruns/tuneup/instrumentation/utilities.rb", "lib/fiveruns/tuneup/multipart.rb", "lib/fiveruns/tuneup/runs.rb", "lib/fiveruns/tuneup/schema.rb", "lib/fiveruns/tuneup/step.rb", "lib/fiveruns/tuneup/urls.rb", "lib/fiveruns/tuneup/version.rb", "lib/fiveruns/tuneup.rb", "lib/fiveruns_tuneup.rb", "lib/tuneup_config.rb", "lib/tuneup_controller.rb", "lib/tuneup_helper.rb", "README.rdoc", "tasks/assets.rake"]
19
+ s.files = ["assets/images/arrows.gif", "assets/images/edit.png", "assets/images/fade.png", "assets/images/fade_down.png", "assets/images/head.gif", "assets/images/logo.gif", "assets/images/logo_clear.png", "assets/images/magnify.png", "assets/images/pip.gif", "assets/images/pointer.gif", "assets/images/schema.png", "assets/images/signin.gif", "assets/images/spinner.gif", "assets/images/warning.gif", "assets/javascripts/prototype.js", "assets/javascripts/tuneup.js", "assets/stylesheets/tuneup.css", "bin/fiveruns_tuneup", "History.rdoc", "init.rb", "install.rb", "lib/bumpspark_helper.rb", "lib/fiveruns/tuneup/asset_tags.rb", "lib/fiveruns/tuneup/configuration.rb", "lib/fiveruns/tuneup/custom_methods.rb", "lib/fiveruns/tuneup/environment.rb", "lib/fiveruns/tuneup/instrumentation/action_controller/base.rb", "lib/fiveruns/tuneup/instrumentation/action_view/base.rb", "lib/fiveruns/tuneup/instrumentation/active_record/base.rb", "lib/fiveruns/tuneup/instrumentation/cgi/session.rb", "lib/fiveruns/tuneup/instrumentation/utilities.rb", "lib/fiveruns/tuneup/multipart.rb", "lib/fiveruns/tuneup/runs.rb", "lib/fiveruns/tuneup/schema.rb", "lib/fiveruns/tuneup/step.rb", "lib/fiveruns/tuneup/urls.rb", "lib/fiveruns/tuneup/version.rb", "lib/fiveruns/tuneup.rb", "lib/fiveruns_tuneup.rb", "lib/tuneup_config.rb", "lib/tuneup_controller.rb", "lib/tuneup_helper.rb", "Manifest", "rails/init.rb", "Rakefile", "README.rdoc", "tasks/assets.rake", "test/test_helper.rb", "test/tuneup_test.rb", "uninstall.rb", "views/tuneup/_data.html.erb", "views/tuneup/_flash.html.erb", "views/tuneup/_link.html.erb", "views/tuneup/_schema.html.erb", "views/tuneup/_sql.html.erb", "views/tuneup/_step.html.erb", "views/tuneup/panel/_registered.html.erb", "views/tuneup/panel/_unregistered.html.erb", "fiveruns_tuneup.gemspec"]
20
20
  s.has_rdoc = true
21
21
  s.homepage = %q{http://github.com/fiveruns/fiveruns_tuneup}
22
22
  s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Fiveruns_tuneup", "--main", "README.rdoc"]
23
23
  s.require_paths = ["lib"]
24
24
  s.rubyforge_project = %q{fiveruns}
25
- s.rubygems_version = %q{1.0.1}
25
+ s.rubygems_version = %q{1.1.1}
26
26
  s.summary = %q{Instrumentation for the FiveRuns TuneUp product.}
27
27
  s.test_files = ["test/test_helper.rb", "test/tuneup_test.rb"]
28
28
 
data/install.rb CHANGED
@@ -1,18 +1,13 @@
1
- # Allow linking (for development)
2
- method = ENV['LINK'] ? :ln_s : :cp
3
1
  installed = false
4
2
  Dir[File.dirname(__FILE__) << "/assets/*"].each do |location|
5
3
  directory = File.basename(location)
6
4
  destination = File.join(RAILS_ROOT, 'public', directory, 'tuneup')
7
- FileUtils.mkdir_p(destination) rescue nil
5
+ FileUtils.rm_rf(destination) rescue nil
6
+ FileUtils.mkdir_p(destination)
8
7
  Dir[File.join(location, '*')].each do |file|
9
8
  new_filename = File.join(destination, File.basename(file))
10
9
  unless File.exists?(new_filename)
11
- FileUtils.send(method, file, new_filename)
12
- installed = true
10
+ FileUtils.cp file, new_filename
13
11
  end
14
12
  end
15
- end
16
- if installed
17
- STDERR.puts "FiveRuns TuneUp: Installed assets in public/"
18
13
  end
@@ -5,7 +5,7 @@ require 'zlib'
5
5
  # discussed and collaborated on at:
6
6
  # http://redhanded.hobix.com/inspect/sparklinesForMinimalists.html
7
7
  # Many thanks to the various collaborators; _why (concept), MenTaLguY (transparency), and jzp (png)
8
- module BumpsparkHelper
8
+ module BumpsparkHelper #:nodoc:
9
9
 
10
10
  def build_png_chunk(type,data)
11
11
  to_check = type + data
@@ -33,6 +33,14 @@ module Fiveruns
33
33
  result
34
34
  end
35
35
 
36
+ def config(&block)
37
+ yield configuration
38
+ end
39
+
40
+ def configuration
41
+ @configuration ||= ::Fiveruns::Tuneup::Configuration.new
42
+ end
43
+
36
44
  def collecting
37
45
  if defined?(@collecting)
38
46
  @collecting
@@ -78,19 +86,51 @@ module Fiveruns
78
86
  end
79
87
 
80
88
  def start
81
- log :info, "Starting..."
82
- install_instrumentation
83
- log :debug, "Using collector at #{collector_url}"
84
- log :debug, "Using frontend at #{frontend_url}"
89
+ if supports_rails?
90
+ load_configuration_file
91
+ if configuration.instrument?
92
+ yield
93
+ log :info, "Starting..."
94
+ install_instrumentation
95
+ log :debug, "Using collector at #{collector_url}"
96
+ log :debug, "Using frontend at #{frontend_url}"
97
+ else
98
+ log :warn, "Not configured to run in #{RAILS_ENV} environment, aborting."
99
+ end
100
+ end
85
101
  end
86
102
 
87
103
  def log(level, text)
88
- LOGGER.send(level, "FiveRuns TuneUp (v#{Fiveruns::Tuneup::Version::STRING}): #{text}")
104
+ message = "FiveRuns TuneUp (v#{Fiveruns::Tuneup::Version::STRING}): #{text}"
105
+ LOGGER.send(level, message)
106
+ STDERR.puts message if level == :error
89
107
  end
90
108
 
91
109
  #######
92
110
  private
93
111
  #######
112
+
113
+ def configuration_file
114
+ File.join(RAILS_ROOT, 'config/tuneup.rb')
115
+ end
116
+
117
+ def load_configuration_file
118
+ if File.exists?(configuration_file)
119
+ require configuration_file
120
+ end
121
+ end
122
+
123
+ def supports_rails?
124
+ version = Rails::VERSION rescue nil
125
+ return true unless version
126
+ if version::MAJOR < 2
127
+ log :error, "Sorry, FiveRuns TuneUp does not currently support Rails < 2.0.0; aborting load."
128
+ false
129
+ else
130
+ log :info, "Rails version #{version::STRING} is supported, loading..."
131
+ true
132
+ end
133
+ end
94
134
 
95
135
  def clear_stack
96
136
  @stack = nil
@@ -20,6 +20,9 @@ module Fiveruns
20
20
  )
21
21
  response.headers["Content-Length"] += insertion.size
22
22
  response.body.replace(before << insertion << '</head>' << after)
23
+ log :error, "Inserted asset tags"
24
+ else
25
+ log :error, "Could not find closing </head> tag for insertion"
23
26
  end
24
27
  end
25
28
 
@@ -0,0 +1,15 @@
1
+ module Fiveruns::Tuneup
2
+
3
+ class Configuration
4
+
5
+ def environments
6
+ @environments ||= %w(development)
7
+ end
8
+
9
+ def instrument?
10
+ environments.map(&:to_s).include?(RAILS_ENV)
11
+ end
12
+
13
+ end
14
+
15
+ end
@@ -1,7 +1,7 @@
1
1
  module Fiveruns::Tuneup::CustomMethods
2
2
 
3
+ # Manually instrument methods
3
4
  def tuneup(*args)
4
- options = args.last.is_a?(Hash) ? args.pop : {}
5
5
  Fiveruns::Tuneup.add_custom_methods(self, *args)
6
6
  end
7
7
 
@@ -118,6 +118,7 @@ module Fiveruns
118
118
  #######
119
119
 
120
120
  def wrap(klass, format, meth, name, layer)
121
+ return if klass.instance_methods.include?(format % :with)
121
122
  text = <<-EOC
122
123
  def #{format % :with}(*args, &block)
123
124
  Fiveruns::Tuneup.step "#{name}", :#{layer} do
@@ -3,7 +3,7 @@ module Fiveruns
3
3
  module Runs
4
4
 
5
5
  def run_dir
6
- @run_dir ||= File.join(RAILS_ROOT, 'tmp', 'tuneup', 'runs')
6
+ @run_dir ||= File.join(RAILS_ROOT, 'tmp', 'tuneup', 'runs', RAILS_ENV)
7
7
  end
8
8
 
9
9
  def retrieve_run(run_id)
@@ -104,7 +104,8 @@ module Fiveruns
104
104
  def disparity
105
105
  @disparity ||= begin
106
106
  child_total = children.map(&:time).sum || 0
107
- time - child_total
107
+ disparity = time - child_total
108
+ disparity > 0 ? disparity : 0
108
109
  end
109
110
  end
110
111
 
@@ -66,7 +66,7 @@ module Fiveruns
66
66
 
67
67
  MAJOR = 0
68
68
  MINOR = 8
69
- TINY = 3
69
+ TINY = 4
70
70
 
71
71
  # The current version as a Version instance
72
72
  CURRENT = new(MAJOR, MINOR, TINY)
@@ -3,6 +3,12 @@ require 'ostruct'
3
3
  require 'open-uri'
4
4
 
5
5
  class TuneupController < ActionController::Base
6
+
7
+ def self.request_forgery_protection_options
8
+ ApplicationController.request_forgery_protection_options || {}
9
+ rescue
10
+ Hash.new
11
+ end
6
12
 
7
13
  def show
8
14
  render :update do |page|
data/lib/tuneup_helper.rb CHANGED
@@ -60,7 +60,7 @@ module TuneupHelper #:nodoc:
60
60
  def tuneup_step_link(step)
61
61
  name = tuneup_style_step_name(tuneup_truncate_step_name(step))
62
62
  link = if step.children.any?
63
- link_to_function(name, "$('#{dom_id(step, :children)}').toggle();$('#{dom_id(step)}').toggleClassName('tuneup-opened');")
63
+ link_to_function(name, "$('#{dom_id(step, :children)}').toggle();$('#{dom_id(step)}').toggleClassName('tuneup-opened');", :class => "tuneup-step-link")
64
64
  else
65
65
  name
66
66
  end
@@ -162,6 +162,8 @@ module TuneupHelper #:nodoc:
162
162
  update_page do |page|
163
163
  page['tuneup-flash'].removeClassName('tuneup-show');
164
164
  page['tuneup-content'].replace_html(render(:partial => "tuneup/panel/#{@config.state}"))
165
+ page << 'TuneUp.adjustAbsoluteElements(document.body);'
166
+ page << 'TuneUp.adjustFixedElements();'
165
167
  end
166
168
  end
167
169
 
@@ -174,6 +176,8 @@ module TuneupHelper #:nodoc:
174
176
  page['tuneup-flash'].removeClassName("tuneup-#{other_type}")
175
177
  end
176
178
  page['tuneup-flash'].addClassName("tuneup-#{type}");
179
+ page << 'TuneUp.adjustAbsoluteElements(document.body);'
180
+ page << 'TuneUp.adjustFixedElements();'
177
181
  end
178
182
  end
179
183
 
data/rails/init.rb CHANGED
@@ -1,20 +1,20 @@
1
- require 'dispatcher'
2
- Dispatcher.to_prepare :tuneup_route do
3
- ActionController::Routing::Routes.add_route '/tuneup', :controller => 'tuneup', :action => 'show'
4
- ActionController::Routing::Routes.add_route '/tuneup/:action', :controller => 'tuneup'
5
- 2.times do
6
- route = ActionController::Routing::Routes.routes.pop
7
- ActionController::Routing::Routes.routes.unshift(route)
1
+ Fiveruns::Tuneup.start do
2
+ require 'dispatcher'
3
+ Dispatcher.to_prepare :tuneup_route do
4
+ ActionController::Routing::Routes.add_route '/tuneup', :controller => 'tuneup', :action => 'show'
5
+ ActionController::Routing::Routes.add_route '/tuneup/:action', :controller => 'tuneup'
6
+ 2.times do
7
+ route = ActionController::Routing::Routes.routes.pop
8
+ ActionController::Routing::Routes.routes.unshift(route)
9
+ end
8
10
  end
11
+ Dispatcher.to_prepare :tuneup_controller_filters do
12
+ TuneupController.filter_chain.clear
13
+ TuneupController.before_filter :find_config, :except => :index
14
+ end
15
+ [ActionController::Base, ActiveRecord::Base, ActionView::Base].each do |target|
16
+ target.extend Fiveruns::Tuneup::CustomMethods
17
+ end
18
+ ActionController::Base.append_view_path(File.dirname(__FILE__) << "/../views")
19
+ require File.dirname(__FILE__) << "/../install" # Check for assets
9
20
  end
10
- Dispatcher.to_prepare :tuneup_controller_filters do
11
- TuneupController.filter_chain.clear
12
- TuneupController.before_filter :find_config, :except => :index
13
- end
14
- [ActionController::Base, ActiveRecord::Base, ActionView::Base].each do |target|
15
- target.extend Fiveruns::Tuneup::CustomMethods
16
- end
17
-
18
- ActionController::Base.append_view_path(File.dirname(__FILE__) << "/../views")
19
- require File.dirname(__FILE__) << "/../install" # Check for assets
20
- Fiveruns::Tuneup.start
@@ -7,9 +7,8 @@
7
7
  <%= link_to_upload %>
8
8
  </div>
9
9
  <%= render :partial => 'schema' %>
10
- <div id='tuneup-details'>
11
- <ul>
12
- <%= render :partial => 'step', :collection => tuneup_data.children %>
13
- </ul>
14
- </div>
10
+ <ul id="tuneup-details">
11
+ <%= render :partial => 'step', :collection => tuneup_data.children %>
12
+ <li style="clear:both"></li>
13
+ </ul>
15
14
  </div>
@@ -1 +1 @@
1
- <p class='full'><%= tuneup_collection_link %></p>
1
+ <p class='tuneup-full'><%= tuneup_collection_link %></p>
@@ -1,11 +1,12 @@
1
1
  <% content_tag_for :li, step, :class => tuneup_css_class_for_step(step) do %>
2
- <dl class='tuneup-step-info'>
3
- <dt><p><span class='time'><%= '%.2f' % step.time %> ms</span>
2
+ <ul class='tuneup-step-info'>
3
+ <li class="tuneup-title"><p><span class='time'><%= '%.2f' % step.time %> ms</span>
4
4
  <%= tuneup_step_link(step) %>
5
5
  <%= link_to_edit_step(step) %>
6
- </p></dt>
7
- <dd><%= tuneup_bar(step, :width => (280 * (step.time / tuneup_data.time))) %></dd>
8
- </dl>
6
+ </p></li>
7
+ <li class="tuneup-detail-bar"><%= tuneup_bar(step, :width => (280 * (step.time / tuneup_data.time))) %></li>
8
+ <li style="clear:both"></li>
9
+ </ul>
9
10
  <%= render :partial => 'sql', :object => step.sql, :locals => {:step => step} if step.sql %>
10
11
  <% if step.children.any? %>
11
12
  <ul id='<%= dom_id step, :children %>'<% if step.depth > 1 %> class='fiveruns_tuneup_children' <% unless open_step?(step) %>style='display:none'<% end %><% end %>>
@@ -1,5 +1,5 @@
1
1
  <% form_remote_tag :url => '/tuneup/signin', :loading => 'TuneUp.Spinner.start()', :complete => 'TuneUp.Spinner.stop()' do %>
2
- <p class='full'>
2
+ <p class='tuneup-full'>
3
3
  <label for='email'>Email</label>
4
4
  <%= text_field_tag :email, nil, :size => 20 %>
5
5
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fiveruns_tuneup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.3
4
+ version: 0.8.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - FiveRuns Development Team
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-05-30 00:00:00 -05:00
12
+ date: 2008-06-01 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -31,6 +31,7 @@ extra_rdoc_files:
31
31
  - bin/fiveruns_tuneup
32
32
  - lib/bumpspark_helper.rb
33
33
  - lib/fiveruns/tuneup/asset_tags.rb
34
+ - lib/fiveruns/tuneup/configuration.rb
34
35
  - lib/fiveruns/tuneup/custom_methods.rb
35
36
  - lib/fiveruns/tuneup/environment.rb
36
37
  - lib/fiveruns/tuneup/instrumentation/action_controller/base.rb
@@ -75,6 +76,7 @@ files:
75
76
  - install.rb
76
77
  - lib/bumpspark_helper.rb
77
78
  - lib/fiveruns/tuneup/asset_tags.rb
79
+ - lib/fiveruns/tuneup/configuration.rb
78
80
  - lib/fiveruns/tuneup/custom_methods.rb
79
81
  - lib/fiveruns/tuneup/environment.rb
80
82
  - lib/fiveruns/tuneup/instrumentation/action_controller/base.rb
@@ -137,7 +139,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
137
139
  requirements: []
138
140
 
139
141
  rubyforge_project: fiveruns
140
- rubygems_version: 1.0.1
142
+ rubygems_version: 1.1.1
141
143
  signing_key:
142
144
  specification_version: 2
143
145
  summary: Instrumentation for the FiveRuns TuneUp product.