rack-mini-profiler 0.1.17 → 0.1.22

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.

Potentially problematic release.


This version of rack-mini-profiler might be problematic. Click here for more details.

Files changed (34) hide show
  1. data/{CHANGELOG → Ruby/CHANGELOG} +107 -83
  2. data/{README.md → Ruby/README.md} +1 -1
  3. data/{lib → Ruby/lib}/html/includes.css +0 -0
  4. data/{lib → Ruby/lib}/html/includes.js +2 -1
  5. data/{lib → Ruby/lib}/html/includes.less +0 -0
  6. data/{lib → Ruby/lib}/html/includes.tmpl +0 -0
  7. data/{lib → Ruby/lib}/html/jquery.1.7.1.js +0 -0
  8. data/{lib → Ruby/lib}/html/jquery.tmpl.js +0 -0
  9. data/{lib → Ruby/lib}/html/list.css +0 -0
  10. data/{lib → Ruby/lib}/html/list.js +0 -0
  11. data/{lib → Ruby/lib}/html/list.tmpl +0 -0
  12. data/{lib → Ruby/lib}/html/profile_handler.js +0 -0
  13. data/{lib → Ruby/lib}/html/share.html +0 -0
  14. data/{lib → Ruby/lib}/mini_profiler/client_settings.rb +0 -0
  15. data/{lib → Ruby/lib}/mini_profiler/client_timer_struct.rb +0 -0
  16. data/{lib → Ruby/lib}/mini_profiler/config.rb +0 -0
  17. data/{lib → Ruby/lib}/mini_profiler/context.rb +0 -0
  18. data/Ruby/lib/mini_profiler/gc_profiler.rb +103 -0
  19. data/{lib → Ruby/lib}/mini_profiler/page_timer_struct.rb +0 -0
  20. data/{lib → Ruby/lib}/mini_profiler/profiler.rb +22 -6
  21. data/{lib → Ruby/lib}/mini_profiler/profiling_methods.rb +26 -2
  22. data/{lib → Ruby/lib}/mini_profiler/request_timer_struct.rb +0 -0
  23. data/{lib → Ruby/lib}/mini_profiler/sql_timer_struct.rb +0 -0
  24. data/{lib → Ruby/lib}/mini_profiler/storage/abstract_store.rb +0 -0
  25. data/{lib → Ruby/lib}/mini_profiler/storage/file_store.rb +0 -0
  26. data/Ruby/lib/mini_profiler/storage/memcache_store.rb +51 -0
  27. data/{lib → Ruby/lib}/mini_profiler/storage/memory_store.rb +0 -0
  28. data/{lib → Ruby/lib}/mini_profiler/storage/redis_store.rb +0 -0
  29. data/{lib → Ruby/lib}/mini_profiler/timer_struct.rb +0 -0
  30. data/{lib → Ruby/lib}/mini_profiler_rails/railtie.rb +2 -1
  31. data/{lib → Ruby/lib}/patches/sql_patches.rb +0 -0
  32. data/{lib → Ruby/lib}/rack-mini-profiler.rb +1 -1
  33. data/rack-mini-profiler.gemspec +8 -6
  34. metadata +42 -40
@@ -1,83 +1,107 @@
1
- 28-June-2012 - Sam
2
-
3
- * Started change log
4
- * Corrected profiler so it properly captures POST requests (was supressing non 200s)
5
- * Amended Rack.MiniProfiler.config[:user_provider] to use ip addres for identity
6
- * Fixed bug where unviewed missing ids never got cleared
7
- * Supress all '/assets/' in the rails tie (makes debugging easier)
8
- * record_sql was mega buggy
9
-
10
- 9-July-2012 - Sam
11
-
12
- * Cleaned up mechanism for profiling in production, all you need to do now
13
- is call Rack::MiniProfiler.authorize_request to get profiling working in
14
- production
15
- * Added option to display full backtraces pp=full-backtrace
16
- * Cleaned up railties, got rid of the post authorize callback
17
- * Version 0.1.3
18
-
19
- 12-July-2012 - Sam
20
-
21
- * Fixed incorrect profiling steps (was not indenting or measuring start time right
22
- * Implemented native PG and MySql2 interceptors, this gives way more accurate times
23
- * Refactored context so its a proper class and not a hash
24
- * Added some more client probing built in to rails
25
- * More tests
26
-
27
- 18-July-2012 - Sam
28
-
29
- * Added First Paint time for chrome
30
- * Bug fix to ensure non Rails installs have mini profiler
31
- * Version 0.1.7
32
-
33
- 30-July-2012 - Sam
34
-
35
- * Made compliant with ancient versions of Rack (including Rack used by Rails2)
36
- * Fixed broken share link
37
- * Fixed crashes on startup (in MemoryStore and FileStore)
38
- * Version 0.1.8
39
- * Unicode fix
40
- * Version 0.1.9
41
-
42
- 7-August-2012 - Sam
43
-
44
- * Added option to disable profiler for the current session (pp=disable / pp=enable)
45
- * yajl compatability contributed by Sven Riedel
46
-
47
- 10-August-2012 - Sam
48
-
49
- * Added basic prepared statement profiling for postgres
50
-
51
- 20-August-2012 - Sam
52
-
53
- * 1.12.pre
54
- * Cap X-MiniProfiler-Ids at 10, otherwise the header can get killed
55
-
56
- 3-September-2012 - Sam
57
-
58
- * 1.13.pre
59
- * pg gem prepared statements were not being logged correctly
60
- * added setting config.backtrace_ignores = [] - an array of regexes that match on caller lines that get ignored
61
- * added setting config.backtrace_includes = [] - an array of regexes that get included in the trace by default
62
- * cleaned up the way client settings are stored
63
- * made pp=full-backtrace "sticky"
64
- * added pp=normal-backtrace to clear the "sticky" state
65
- * change "pp=sample" to work with "caller" no need for stack trace gem
66
-
67
- 4-September-2012 - Sam
68
-
69
- * 1.15.pre
70
- * fixed annoying bug where client settings were not sticking
71
- * fixed long standing issue with Rack::ConditionalGet stopping MiniProfiler from working properly
72
-
73
- 5-September-2012 - Sam
74
-
75
- * 1.16
76
- * fixed long standing problem specs (issue with memory store)
77
- * fixed issue where profiler would be dumped when you got a 404 in production (and any time rails is bypassed)
78
- * implemented stacktrace properly
79
-
80
- 9-September-2012 - Sam
81
-
82
- * 1.17
83
- * pp=sample was bust unless stacktrace was installed
1
+ 28-June-2012 - Sam
2
+
3
+ * Started change log
4
+ * Corrected profiler so it properly captures POST requests (was supressing non 200s)
5
+ * Amended Rack.MiniProfiler.config[:user_provider] to use ip addres for identity
6
+ * Fixed bug where unviewed missing ids never got cleared
7
+ * Supress all '/assets/' in the rails tie (makes debugging easier)
8
+ * record_sql was mega buggy
9
+ * added MemcacheStore
10
+
11
+ 9-July-2012 - Sam
12
+
13
+ * Cleaned up mechanism for profiling in production, all you need to do now
14
+ is call Rack::MiniProfiler.authorize_request to get profiling working in
15
+ production
16
+ * Added option to display full backtraces pp=full-backtrace
17
+ * Cleaned up railties, got rid of the post authorize callback
18
+ * Version 0.1.3
19
+
20
+ 12-July-2012 - Sam
21
+
22
+ * Fixed incorrect profiling steps (was not indenting or measuring start time right
23
+ * Implemented native PG and MySql2 interceptors, this gives way more accurate times
24
+ * Refactored context so its a proper class and not a hash
25
+ * Added some more client probing built in to rails
26
+ * More tests
27
+
28
+ 18-July-2012 - Sam
29
+
30
+ * Added First Paint time for chrome
31
+ * Bug fix to ensure non Rails installs have mini profiler
32
+ * Version 0.1.7
33
+
34
+ 30-July-2012 - Sam
35
+
36
+ * Made compliant with ancient versions of Rack (including Rack used by Rails2)
37
+ * Fixed broken share link
38
+ * Fixed crashes on startup (in MemoryStore and FileStore)
39
+ * Version 0.1.8
40
+ * Unicode fix
41
+ * Version 0.1.9
42
+
43
+ 7-August-2012 - Sam
44
+
45
+ * Added option to disable profiler for the current session (pp=disable / pp=enable)
46
+ * yajl compatability contributed by Sven Riedel
47
+
48
+ 10-August-2012 - Sam
49
+
50
+ * Added basic prepared statement profiling for postgres
51
+
52
+ 20-August-2012 - Sam
53
+
54
+ * 1.12.pre
55
+ * Cap X-MiniProfiler-Ids at 10, otherwise the header can get killed
56
+
57
+ 3-September-2012 - Sam
58
+
59
+ * 1.13.pre
60
+ * pg gem prepared statements were not being logged correctly
61
+ * added setting config.backtrace_ignores = [] - an array of regexes that match on caller lines that get ignored
62
+ * added setting config.backtrace_includes = [] - an array of regexes that get included in the trace by default
63
+ * cleaned up the way client settings are stored
64
+ * made pp=full-backtrace "sticky"
65
+ * added pp=normal-backtrace to clear the "sticky" state
66
+ * change "pp=sample" to work with "caller" no need for stack trace gem
67
+
68
+ 4-September-2012 - Sam
69
+
70
+ * 1.15.pre
71
+ * fixed annoying bug where client settings were not sticking
72
+ * fixed long standing issue with Rack::ConditionalGet stopping MiniProfiler from working properly
73
+
74
+ 5-September-2012 - Sam
75
+
76
+ * 1.16
77
+ * fixed long standing problem specs (issue with memory store)
78
+ * fixed issue where profiler would be dumped when you got a 404 in production (and any time rails is bypassed)
79
+ * implemented stacktrace properly
80
+
81
+ 9-September-2012 - Sam
82
+
83
+ * 1.17
84
+ * pp=sample was bust unless stacktrace was installed
85
+
86
+ 10-September-2012 - Sam
87
+
88
+ * 1.19
89
+ * fix compat issue with 1.8.7
90
+
91
+ 12-September-2012 - Sam
92
+
93
+ * 1.20
94
+ * Added pp=profile-gc , it allows you to profile the GC in Ruby 1.9.3
95
+
96
+ 17-September-2012
97
+ * 1.21
98
+ * New MemchacedStore
99
+ * Rails 4 support
100
+
101
+ 17-September-2012
102
+ * Allow rack-mini-profiler to be sourced from github
103
+ * Extracted the pp=profile-gc-time out, the object space profiler needs to disable gc
104
+
105
+ 20-September-2010
106
+ * 1.22
107
+ * Fix permission issue in the gem
@@ -56,7 +56,7 @@ By default, rack-mini-profiler stores its results in a memory store:
56
56
  Rack::MiniProfiler.config.storage = Rack::MiniProfiler::MemoryStore
57
57
  ```
58
58
 
59
- There are 2 other available storage engines, `RedisStore` and `FileStore`.
59
+ There are 2 other available storage engines, `RedisStore`, `MemcacheStore`, and `FileStore`.
60
60
 
61
61
  MemoryStore is stores results in a processes heap - something that does not work well in a multi process environment.
62
62
  FileStore stores results in the file system - something that may not work well in a multi machine environment.
File without changes
@@ -449,11 +449,12 @@ var MiniProfiler = (function ($) {
449
449
  };
450
450
 
451
451
  // fetch profile results for any ajax calls
452
+ // note, this does not use $ cause we want to hook into the main jQuery
452
453
  if (jQuery && jQuery(document) && jQuery(document).ajaxComplete) {
453
454
  jQuery(document).ajaxComplete(jQueryAjaxComplete);
454
455
  }
455
456
 
456
- if (jQuery(document).ajaxStart)
457
+ if (jQuery && jQuery(document).ajaxStart)
457
458
  jQuery(document).ajaxStart(function () { ajaxStartTime = new Date(); });
458
459
 
459
460
  // fetch results after ASP Ajax calls
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,103 @@
1
+ class Rack::MiniProfiler::GCProfiler
2
+
3
+ def object_space_stats
4
+ stats = {}
5
+ ids = Set.new
6
+ i=0
7
+ ObjectSpace.each_object { |o|
8
+ i = stats[o.class] || 0
9
+ i += 1
10
+ stats[o.class] = i
11
+ ids << o.object_id if Integer === o.object_id
12
+ }
13
+ {:stats => stats, :ids => ids}
14
+ end
15
+
16
+ def diff_object_stats(before,after)
17
+ diff = {}
18
+ after.each do |k,v|
19
+ diff[k] = v - (before[k] || 0)
20
+ end
21
+ before.each do |k,v|
22
+ diff[k] = 0 - v unless after[k]
23
+ end
24
+
25
+ diff
26
+ end
27
+
28
+ def analyze_strings(ids_before,ids_after)
29
+ result = {}
30
+ ids_after.each do |id|
31
+ obj = ObjectSpace._id2ref(id)
32
+ if String === obj && !ids_before.include?(obj.object_id)
33
+ result[obj] ||= 0
34
+ result[obj] += 1
35
+ end
36
+ end
37
+ result
38
+ end
39
+
40
+ def profile_gc_time(app,env)
41
+ body = []
42
+
43
+ begin
44
+ GC::Profiler.clear
45
+ GC::Profiler.enable
46
+ b = app.call(env)[2]
47
+ b.close if b.respond_to? :close
48
+ body << "GC Profiler ran during this request, if it fired you will see the cost below:\n\n"
49
+ body << GC::Profiler.result
50
+ ensure
51
+ GC.enable
52
+ GC::Profiler.disable
53
+ end
54
+
55
+ return [200, {'Content-Type' => 'text/plain'}, body]
56
+ end
57
+
58
+ def profile_gc(app,env)
59
+
60
+ body = [];
61
+
62
+ stat_before,stat_after,diff,string_analysis = nil
63
+ begin
64
+ GC.disable
65
+ stat_before = object_space_stats
66
+ b = app.call(env)[2]
67
+ b.close if b.respond_to? :close
68
+ stat_after = object_space_stats
69
+
70
+ diff = diff_object_stats(stat_before[:stats],stat_after[:stats])
71
+ string_analysis = analyze_strings(stat_before[:ids], stat_after[:ids])
72
+ ensure
73
+ GC.enable
74
+ end
75
+
76
+
77
+ body << "
78
+ ObjectSpace delta caused by request:
79
+ --------------------------------------------\n"
80
+ diff.to_a.reject{|k,v| v == 0}.sort{|x,y| y[1] <=> x[1]}.each do |k,v|
81
+ body << "#{k} : #{v}\n" if v != 0
82
+ end
83
+
84
+ body << "\n
85
+ ObjectSpace stats:
86
+ -----------------\n"
87
+
88
+ stat_after[:stats].to_a.sort{|x,y| y[1] <=> x[1]}.each do |k,v|
89
+ body << "#{k} : #{v}\n"
90
+ end
91
+
92
+
93
+ body << "\n
94
+ String stats:
95
+ ------------\n"
96
+
97
+ string_analysis.to_a.sort{|x,y| y[1] <=> x[1] }.take(1000).each do |string,count|
98
+ body << "#{count} : #{string}\n"
99
+ end
100
+
101
+ return [200, {'Content-Type' => 'text/plain'}, body]
102
+ end
103
+ end
@@ -7,6 +7,7 @@ require 'mini_profiler/sql_timer_struct'
7
7
  require 'mini_profiler/client_timer_struct'
8
8
  require 'mini_profiler/request_timer_struct'
9
9
  require 'mini_profiler/storage/abstract_store'
10
+ require 'mini_profiler/storage/memcache_store'
10
11
  require 'mini_profiler/storage/memory_store'
11
12
  require 'mini_profiler/storage/redis_store'
12
13
  require 'mini_profiler/storage/file_store'
@@ -14,12 +15,14 @@ require 'mini_profiler/config'
14
15
  require 'mini_profiler/profiling_methods'
15
16
  require 'mini_profiler/context'
16
17
  require 'mini_profiler/client_settings'
18
+ require 'mini_profiler/gc_profiler'
17
19
 
18
20
  module Rack
19
21
 
20
22
  class MiniProfiler
21
23
 
22
- VERSION = '107'.freeze
24
+ # we really should add a cleaner way to version JS and includes
25
+ VERSION = '108'.freeze
23
26
 
24
27
  class << self
25
28
 
@@ -208,6 +211,20 @@ module Rack
208
211
  return [status,headers,body]
209
212
  end
210
213
 
214
+ if query_string =~ /pp=profile-gc/
215
+ # begin
216
+ if query_string =~ /pp=profile-gc-time/
217
+ return Rack::MiniProfiler::GCProfiler.new.profile_gc_time(@app, env)
218
+ else
219
+ return Rack::MiniProfiler::GCProfiler.new.profile_gc(@app, env)
220
+ end
221
+ # rescue => e
222
+ # p e
223
+ # e.backtrace.each do |s|
224
+ # puts s
225
+ # end
226
+ # end
227
+ end
211
228
  MiniProfiler.create_current(env, @config)
212
229
  MiniProfiler.deauthorize_request if @config.authorization_mode == :whitelist
213
230
  if query_string =~ /pp=normal-backtrace/
@@ -295,7 +312,7 @@ module Rack
295
312
 
296
313
  if query_string =~ /pp=help/
297
314
  body.close if body.respond_to? :close
298
- return help(nil, client_settings)
315
+ return help(client_settings)
299
316
  end
300
317
 
301
318
  page_struct = current.page_struct
@@ -372,7 +389,7 @@ module Rack
372
389
  [200, headers, [body]]
373
390
  end
374
391
 
375
- def help(category = nil, client_settings)
392
+ def help(client_settings)
376
393
  headers = {'Content-Type' => 'text/plain'}
377
394
  body = "Append the following to your query string:
378
395
 
@@ -385,10 +402,9 @@ module Rack
385
402
  pp=sample : sample stack traces and return a report isolating heavy usage (experimental works best with the stacktrace gem)
386
403
  pp=disable : disable profiling for this session
387
404
  pp=enable : enable profiling for this session (if previously disabled)
405
+ pp=profile-gc: perform gc profiling on this request, analyzes ObjectSpace generated by request (ruby 1.9.3 only)
406
+ pp=profile-gc-time: perform built-in gc profiling on this request (ruby 1.9.3 only)
388
407
  "
389
- if (category == :stacktrace)
390
- body = "pp=stacktrace requires the stacktrace gem - add gem 'stacktrace' to your Gemfile"
391
- end
392
408
 
393
409
  client_settings.write!(headers)
394
410
  [200, headers, [body]]
@@ -8,6 +8,22 @@ module Rack
8
8
  c.current_timer.add_sql(query, elapsed_ms, c.page_struct, c.skip_backtrace, c.full_backtrace) if (c && c.current_timer)
9
9
  end
10
10
 
11
+ def start_step(name)
12
+ if current
13
+ parent_timer = current.current_timer
14
+ current.current_timer = current_timer = current.current_timer.add_child(name)
15
+ [current_timer,parent_timer]
16
+ end
17
+ end
18
+
19
+ def finish_step(obj)
20
+ if obj && current
21
+ current_timer, parent_timer = obj
22
+ current_timer.record_time
23
+ current.current_timer = parent_timer
24
+ end
25
+ end
26
+
11
27
  # perform a profiling step on given block
12
28
  def step(name, opts = nil)
13
29
  if current
@@ -55,8 +71,16 @@ module Rack
55
71
  return self.send without_profiling, *args, &orig unless Rack::MiniProfiler.current
56
72
 
57
73
  name = default_name
58
- name = blk.bind(self).call(*args) if blk
59
-
74
+ if blk
75
+ name =
76
+ if respond_to?(:instance_exec)
77
+ instance_exec(*args, &blk)
78
+ else
79
+ # deprecated in Rails 4.x
80
+ blk.bind(self).call(*args)
81
+ end
82
+ end
83
+
60
84
  parent_timer = Rack::MiniProfiler.current.current_timer
61
85
  page_struct = Rack::MiniProfiler.current.page_struct
62
86
  result = nil
@@ -0,0 +1,51 @@
1
+ module Rack
2
+ class MiniProfiler
3
+ class MemcacheStore < AbstractStore
4
+
5
+ EXPIRE_SECONDS = 60*60*24
6
+ MAX_RETRIES = 10
7
+
8
+ def initialize(client = nil, prefix = "MPMemcacheStore")
9
+ require 'dalli' unless defined? Dalli
10
+ @prefix = prefix
11
+ @client = client || Dalli::Client.new(['localhost:11211'])
12
+ end
13
+
14
+ def save(page_struct)
15
+ @client.set("#{@prefix}#{page_struct['Id']}", Marshal::dump(page_struct), EXPIRE_SECONDS)
16
+ end
17
+
18
+ def load(id)
19
+ raw = @client.get("#{@prefix}#{id}")
20
+ if raw
21
+ Marshal::load raw
22
+ end
23
+ end
24
+
25
+ def set_unviewed(user, id)
26
+ @client.add("#{@prefix}-#{user}-v", [], EXPIRE_SECONDS)
27
+ MAX_RETRIES.times do
28
+ break if @client.cas("#{@prefix}-#{user}-v", EXPIRE_SECONDS) do |ids|
29
+ ids << id unless ids.include?(id)
30
+ ids
31
+ end
32
+ end
33
+ end
34
+
35
+ def set_viewed(user, id)
36
+ @client.add("#{@prefix}-#{user}-v", [], EXPIRE_SECONDS)
37
+ MAX_RETRIES.times do
38
+ break if @client.cas("#{@prefix}-#{user}-v", EXPIRE_SECONDS) do |ids|
39
+ ids.delete id
40
+ ids
41
+ end
42
+ end
43
+ end
44
+
45
+ def get_unviewed_ids(user)
46
+ @client.get("#{@prefix}-#{user}-v") || []
47
+ end
48
+
49
+ end
50
+ end
51
+ end
@@ -12,8 +12,9 @@ module MiniProfilerRails
12
12
  Rails.env.development? || Rails.env.production?
13
13
  }
14
14
 
15
+ c.skip_paths ||= []
16
+
15
17
  if Rails.env.development?
16
- c.skip_paths ||= []
17
18
  c.skip_paths << "/assets/"
18
19
  c.skip_schema_queries = true
19
20
  end
File without changes
@@ -1,6 +1,6 @@
1
1
  require 'mini_profiler/profiler'
2
2
  require 'patches/sql_patches'
3
3
 
4
- if defined?(::Rails) && ::Rails::VERSION::MAJOR.to_i == 3
4
+ if defined?(::Rails) && ::Rails::VERSION::MAJOR.to_i >= 3
5
5
  require 'mini_profiler_rails/railtie'
6
6
  end
@@ -1,17 +1,17 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "rack-mini-profiler"
3
- s.version = "0.1.17"
3
+ s.version = "0.1.22"
4
4
  s.summary = "Profiles loading speed for rack applications."
5
- s.authors = ["Aleks Totic","Sam Saffron", "Robin Ward"]
6
- s.description = "Page loading speed displayed on every page. Optimize while you develop, performance is a feature."
5
+ s.authors = ["Sam Saffron", "Robin Ward","Aleks Totic"]
6
+ s.description = "Profiling toolkit for Rack applications with Rails integration. Client Side profiling, DB profiling and Server profiling."
7
7
  s.email = "sam.saffron@gmail.com"
8
8
  s.homepage = "http://miniprofiler.com"
9
9
  s.files = [
10
10
  'rack-mini-profiler.gemspec',
11
- ].concat( Dir.glob('lib/**/*').reject {|f| File.directory?(f) || f =~ /~$/ } )
11
+ ].concat( Dir.glob('Ruby/lib/**/*').reject {|f| File.directory?(f) || f =~ /~$/ } )
12
12
  s.extra_rdoc_files = [
13
- "README.md",
14
- "CHANGELOG"
13
+ "Ruby/README.md",
14
+ "Ruby/CHANGELOG"
15
15
  ]
16
16
  s.add_runtime_dependency 'rack', '>= 1.1.3'
17
17
  if RUBY_VERSION < "1.9"
@@ -21,4 +21,6 @@ Gem::Specification.new do |s|
21
21
  s.add_development_dependency 'rake'
22
22
  s.add_development_dependency 'rack-test'
23
23
  s.add_development_dependency 'activerecord', '~> 3.0'
24
+
25
+ s.require_paths = ["Ruby/lib"]
24
26
  end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-mini-profiler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.17
4
+ version: 0.1.22
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
8
- - Aleks Totic
9
8
  - Sam Saffron
10
9
  - Robin Ward
10
+ - Aleks Totic
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2012-09-07 00:00:00.000000000 Z
14
+ date: 2012-09-20 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rack
@@ -77,52 +77,54 @@ dependencies:
77
77
  - - ~>
78
78
  - !ruby/object:Gem::Version
79
79
  version: '3.0'
80
- description: Page loading speed displayed on every page. Optimize while you develop,
81
- performance is a feature.
80
+ description: Profiling toolkit for Rack applications with Rails integration. Client
81
+ Side profiling, DB profiling and Server profiling.
82
82
  email: sam.saffron@gmail.com
83
83
  executables: []
84
84
  extensions: []
85
85
  extra_rdoc_files:
86
- - README.md
87
- - CHANGELOG
86
+ - Ruby/README.md
87
+ - Ruby/CHANGELOG
88
88
  files:
89
89
  - rack-mini-profiler.gemspec
90
- - lib/mini_profiler/sql_timer_struct.rb
91
- - lib/mini_profiler/request_timer_struct.rb
92
- - lib/mini_profiler/timer_struct.rb
93
- - lib/mini_profiler/page_timer_struct.rb
94
- - lib/mini_profiler/client_settings.rb
95
- - lib/mini_profiler/context.rb
96
- - lib/mini_profiler/config.rb
97
- - lib/mini_profiler/profiling_methods.rb
98
- - lib/mini_profiler/client_timer_struct.rb
99
- - lib/mini_profiler/profiler.rb
100
- - lib/mini_profiler/storage/memory_store.rb
101
- - lib/mini_profiler/storage/file_store.rb
102
- - lib/mini_profiler/storage/redis_store.rb
103
- - lib/mini_profiler/storage/abstract_store.rb
104
- - lib/rack-mini-profiler.rb
105
- - lib/html/jquery.1.7.1.js
106
- - lib/html/includes.tmpl
107
- - lib/html/share.html
108
- - lib/html/includes.less
109
- - lib/html/list.css
110
- - lib/html/includes.js
111
- - lib/html/jquery.tmpl.js
112
- - lib/html/list.tmpl
113
- - lib/html/profile_handler.js
114
- - lib/html/includes.css
115
- - lib/html/list.js
116
- - lib/mini_profiler_rails/railtie.rb
117
- - lib/patches/sql_patches.rb
118
- - README.md
119
- - CHANGELOG
90
+ - Ruby/lib/mini_profiler/sql_timer_struct.rb
91
+ - Ruby/lib/mini_profiler/request_timer_struct.rb
92
+ - Ruby/lib/mini_profiler/timer_struct.rb
93
+ - Ruby/lib/mini_profiler/page_timer_struct.rb
94
+ - Ruby/lib/mini_profiler/client_settings.rb
95
+ - Ruby/lib/mini_profiler/context.rb
96
+ - Ruby/lib/mini_profiler/config.rb
97
+ - Ruby/lib/mini_profiler/profiling_methods.rb
98
+ - Ruby/lib/mini_profiler/gc_profiler.rb
99
+ - Ruby/lib/mini_profiler/client_timer_struct.rb
100
+ - Ruby/lib/mini_profiler/profiler.rb
101
+ - Ruby/lib/mini_profiler/storage/memory_store.rb
102
+ - Ruby/lib/mini_profiler/storage/file_store.rb
103
+ - Ruby/lib/mini_profiler/storage/redis_store.rb
104
+ - Ruby/lib/mini_profiler/storage/abstract_store.rb
105
+ - Ruby/lib/mini_profiler/storage/memcache_store.rb
106
+ - Ruby/lib/rack-mini-profiler.rb
107
+ - Ruby/lib/html/jquery.1.7.1.js
108
+ - Ruby/lib/html/includes.tmpl
109
+ - Ruby/lib/html/share.html
110
+ - Ruby/lib/html/includes.less
111
+ - Ruby/lib/html/list.css
112
+ - Ruby/lib/html/includes.js
113
+ - Ruby/lib/html/jquery.tmpl.js
114
+ - Ruby/lib/html/list.tmpl
115
+ - Ruby/lib/html/profile_handler.js
116
+ - Ruby/lib/html/includes.css
117
+ - Ruby/lib/html/list.js
118
+ - Ruby/lib/mini_profiler_rails/railtie.rb
119
+ - Ruby/lib/patches/sql_patches.rb
120
+ - Ruby/README.md
121
+ - Ruby/CHANGELOG
120
122
  homepage: http://miniprofiler.com
121
123
  licenses: []
122
124
  post_install_message:
123
125
  rdoc_options: []
124
126
  require_paths:
125
- - lib
127
+ - Ruby/lib
126
128
  required_ruby_version: !ruby/object:Gem::Requirement
127
129
  none: false
128
130
  requirements:
@@ -131,7 +133,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
131
133
  version: '0'
132
134
  segments:
133
135
  - 0
134
- hash: 899780701
136
+ hash: -138209491
135
137
  required_rubygems_version: !ruby/object:Gem::Requirement
136
138
  none: false
137
139
  requirements:
@@ -140,7 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
142
  version: '0'
141
143
  segments:
142
144
  - 0
143
- hash: 899780701
145
+ hash: -138209491
144
146
  requirements: []
145
147
  rubyforge_project:
146
148
  rubygems_version: 1.8.24