speedup-rails 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a79adaf0346b1581840b1cbc3d88f33e31f31b0e
4
- data.tar.gz: 877452dc9f81628257b2e844c0f6a53025d368bf
3
+ metadata.gz: 0bb89c83b0040085db59dece30966f81ad22dfda
4
+ data.tar.gz: 4858351dc1b7ea0d8b502e337a2951df17fc6746
5
5
  SHA512:
6
- metadata.gz: 5d94ee85e7b3efbd8461ccb7b78bf86b871a115d5437cd488874b1337a5cebb25347cabb88c2d5f0cfb145373b3bf6575e798dca1b659bd066d450ecf28867e9
7
- data.tar.gz: 8a626e5ceb3d20502ddcc69d9fb1e1985bbd160eacd6779720f95be6ac39a95e011326ea3480f72a8bc35d9fea070afa4f7daa9f47ff2719db9f916dd22b213a
6
+ metadata.gz: 02c1eb941cb18965f599e74fbc2a58ac9126fb9f04de4c6a785c132ae2b0035ccd69b75b2fe4fae7c439b7d444648f4fcabb5f980cccf33d9ce3f7d1fc95d1c9
7
+ data.tar.gz: 429645d3ce4bf5ad83149a0f49676b83711287517ec9caad8b706187abe950a3d4344036273f9deb4bb95bf2d2434d5a1d0cf2ba5c52413d7cc08321bd63b422
@@ -4,13 +4,17 @@ module SpeedupRails
4
4
  def show
5
5
  @request_id = params[:id]
6
6
  @request = Speedup::Request.get(@request_id)
7
- @collectors = Speedup.collectors
8
- @redirect = params[:redirect]
9
- render layout: false
7
+ if @request
8
+ @collectors = Speedup.collectors
9
+ @redirect = params[:redirect]
10
+ render layout: false
11
+ else
12
+ render nothing: true, status: :not_found
13
+ end
10
14
  end
11
15
 
12
16
  def rubyprof
13
- send_file Rails.root.join('tmp', 'rubyprof', params[:id] ), :type => 'text/html', :disposition => 'inline'
17
+ send_file Rails.root.join('tmp', 'rubyprof', params[:id] + params[:prof_id]), :type => 'text/html', :disposition => 'inline'
14
18
  end
15
19
 
16
20
  end
@@ -21,7 +21,7 @@
21
21
  </div>
22
22
 
23
23
  <script type="text/javascript">
24
- var traces = document.getElementById("speedup_collectorinfo_<%= key %>").getElementsByClassName('backtrace')
24
+ var traces = document.getElementById("speedup_<%= request_id %>_collectorinfo_<%= key %>").getElementsByClassName('backtrace')
25
25
  for (var j = traces.length - 1; j >= 0; j--) {
26
26
  traces[j].onclick = function() {
27
27
  var i;
@@ -1,3 +1,5 @@
1
1
  <span class="speedup_rails_<%= key %>" data-key="<%= key %>">
2
- <%= link_to 'ruby-prof', rubyprof_result_path(@request_id) %>
2
+ <% data.each do |prof_id| %>
3
+ <%= link_to 'ruby-prof_'+prof_id.to_s, rubyprof_result_path(@request_id, prof_id: prof_id), target: '_blank' %>
4
+ <% end %>
3
5
  </span>
@@ -1,8 +1,8 @@
1
- <ul class="speedup_main_bar speedup_main_bar_<%= @redirect %><%= ' redirect' if @redirect %>">
1
+ <ul class="speedup_main_bar <%= ' redirect' if @redirect %>">
2
2
  <% @collectors.each do |col| %>
3
3
  <% next unless col.render? %>
4
- <li id="speedup_collectorinfo_<%= col.key %>">
5
- <%= render "speedup_rails/collectors/#{col.key}", data: @request[col.key] || [], key: col.key, request_data: @request[:request], redirect: @redirect %>
4
+ <li id="speedup_<%= @request_id %>_collectorinfo_<%= col.key %>">
5
+ <%= render "speedup_rails/collectors/#{col.key}", request_id: @request_id, data: @request[col.key] || [], key: col.key, request_data: @request[:request], redirect: @redirect %>
6
6
  </li>
7
7
  <% end %>
8
8
  </ul>
data/lib/speedup-rails.rb CHANGED
@@ -86,6 +86,12 @@ module Speedup
86
86
  @collectors
87
87
  end
88
88
 
89
+ def self.profile(&block)
90
+ @rubyprof ||= @collectors.detect{|c| c.key == :rubyprof}
91
+ raise "You need to enable rubyprof collector to profile!" unless @rubyprof
92
+ @rubyprof.profile(&block)
93
+ end
94
+
89
95
  end
90
96
 
91
97
  ActiveSupport.run_load_hooks(:speedup, Speedup) if Speedup.enabled?
@@ -34,6 +34,11 @@ module SpeedupRails
34
34
  config.speedup.show_bar = Rails.env.development?
35
35
  config.speedup.automount = true
36
36
 
37
+ initializer :assets do |config|
38
+ Rails.application.config.assets.precompile += %w(speedup_rails/icons.png)
39
+ Rails.application.config.assets.paths << root.join("app", "assets", "images")
40
+ end
41
+
37
42
  initializer 'speedup.set_configs' do |app|
38
43
  ActiveSupport.on_load(:speedup) do
39
44
  app.config.speedup.each do |k,v|
@@ -70,7 +70,7 @@ module Speedup
70
70
  # Uses a event_to_data method.
71
71
  def store_event(evt, key=nil)
72
72
  key ||= self.key
73
- Speedup.request.store_event(key, event_to_data(evt) )
73
+ Speedup.request.store_event(key, event_to_data(evt) ) if Speedup.request
74
74
  end
75
75
 
76
76
  # Transfer the event to actual stored data.
@@ -10,7 +10,7 @@ module Speedup
10
10
  end
11
11
 
12
12
  def parse_options
13
- # pass
13
+ @profile_request = !!@options[:profile_request]
14
14
  end
15
15
 
16
16
  # The data results that are inserted at the end of the request for use in
@@ -22,16 +22,12 @@ module Speedup
22
22
  end
23
23
 
24
24
  def setup_subscribes
25
- before_request do
26
- RubyProf.start if enabled?
27
- end
28
- after_request do
29
- result = RubyProf.stop if enabled?
30
-
31
- # Print a flat profile to text
32
- printer = RubyProf::CallStackPrinter.new(result)
33
- ::File.open(@results_dir.join( Speedup.request.id ), 'wb') do |file|
34
- printer.print(file)
25
+ if enabled? && @profile_request
26
+ before_request do
27
+ start_prof
28
+ end
29
+ after_request do
30
+ end_prof
35
31
  end
36
32
  end
37
33
  end
@@ -41,6 +37,39 @@ module Speedup
41
37
  super || evt.payload[:controller].start_with?('Speedup')
42
38
  end
43
39
 
40
+ def start_prof
41
+ RubyProf.start
42
+ end
43
+
44
+ def end_prof(result_id=nil)
45
+ result = RubyProf.stop
46
+
47
+ Speedup.request.store_event(key, result_id )
48
+
49
+ # Print a flat profile to text
50
+ printer = printer_klass.new(result)
51
+ ::File.open(@results_dir.join( Speedup.request.id + result_id.to_s ), 'wb') do |file|
52
+ printer.print(file)
53
+ end
54
+ end
55
+
56
+ def profile(result_id=nil, &block)
57
+ start_prof
58
+ yield
59
+ end_prof(next_id)
60
+ end
61
+
62
+ private
63
+
64
+ def next_id
65
+ @next_id = @next_id.to_i + 1
66
+ end
67
+
68
+ def printer_klass
69
+ # RubyProf::GraphHtmlPrinter
70
+ RubyProf::CallStackPrinter
71
+ end
72
+
44
73
  end
45
74
  end
46
75
  end
@@ -31,6 +31,10 @@ module Speedup
31
31
  raise exception
32
32
  end
33
33
 
34
+ def speedup_request?(env)
35
+ env['REQUEST_PATH'].starts_with?('/speedup_rails')
36
+ end
37
+
34
38
  class SpeedupBody
35
39
  include Enumerable
36
40
 
@@ -88,8 +92,9 @@ module Speedup
88
92
  end
89
93
  str << "if( typeof jQuery !== 'undefined' ) {
90
94
  jQuery(document).ajaxComplete(function(evt, xhr, settings){
91
- if(! settings.url.match('#{SpeedupRails::Engine.routes.url_helpers.result_path('')}') )
92
- loadRequestData('#{SpeedupRails::Engine.routes.url_helpers.result_path('REQUEST_ID')}'.replace('REQUEST_ID', xhr.getResponseHeader('X-Request-Id')));
95
+ var request_id = xhr.getResponseHeader('X-Request-Id');
96
+ if( request_id && !settings.url.match('#{SpeedupRails::Engine.routes.url_helpers.result_path('')}') )
97
+ loadRequestData('#{SpeedupRails::Engine.routes.url_helpers.result_path('REQUEST_ID')}'.replace('REQUEST_ID', request_id));
93
98
  });
94
99
  }"
95
100
  str << '</script>'
@@ -138,7 +143,7 @@ module Speedup
138
143
  right: 0;
139
144
  padding: 5px;
140
145
  display: none;
141
- height: 500px;
146
+ max-height: 500px;
142
147
  max-width: 200%;
143
148
  overflow: scroll;
144
149
  }
@@ -1,3 +1,3 @@
1
1
  module Speedup
2
- VERSION = "0.0.9"
2
+ VERSION = "0.0.10"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: speedup-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ondřej Ezr
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-16 00:00:00.000000000 Z
11
+ date: 2016-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -562,7 +562,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
562
562
  version: '0'
563
563
  requirements: []
564
564
  rubyforge_project:
565
- rubygems_version: 2.4.8
565
+ rubygems_version: 2.5.1
566
566
  signing_key:
567
567
  specification_version: 4
568
568
  summary: SpeedUpRails provide analyzing and motitoring tool for rails.