rack-mini-profiler 2.0.4 → 2.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +28 -0
  3. data/README.md +53 -5
  4. data/lib/html/includes.css +38 -0
  5. data/lib/html/includes.js +265 -175
  6. data/lib/html/includes.scss +35 -4
  7. data/lib/html/includes.tmpl +93 -3
  8. data/lib/html/profile_handler.js +1 -1
  9. data/lib/html/rack-mini-profiler.css +3 -0
  10. data/lib/html/rack-mini-profiler.js +2 -0
  11. data/lib/html/speedscope/LICENSE +21 -0
  12. data/lib/html/speedscope/README.md +3 -0
  13. data/lib/html/speedscope/demangle-cpp.1768f4cc.js +4 -0
  14. data/lib/html/speedscope/favicon-16x16.f74b3187.png +0 -0
  15. data/lib/html/speedscope/favicon-32x32.bc503437.png +0 -0
  16. data/lib/html/speedscope/file-format-schema.json +324 -0
  17. data/lib/html/speedscope/fonts/source-code-pro-regular.css +8 -0
  18. data/lib/html/speedscope/fonts/source-code-pro-v13-regular.woff +0 -0
  19. data/lib/html/speedscope/fonts/source-code-pro-v13-regular.woff2 +0 -0
  20. data/lib/html/speedscope/import.cf0fa83f.js +115 -0
  21. data/lib/html/speedscope/index.html +2 -0
  22. data/lib/html/speedscope/release.txt +3 -0
  23. data/lib/html/speedscope/reset.8c46b7a1.css +2 -0
  24. data/lib/html/speedscope/source-map.438fa06b.js +24 -0
  25. data/lib/html/speedscope/speedscope.44364064.js +200 -0
  26. data/lib/html/vendor.js +10 -2
  27. data/lib/mini_profiler/asset_version.rb +1 -1
  28. data/lib/mini_profiler/client_settings.rb +3 -2
  29. data/lib/mini_profiler/config.rb +24 -2
  30. data/lib/mini_profiler/profiler.rb +214 -22
  31. data/lib/mini_profiler/profiling_methods.rb +11 -2
  32. data/lib/mini_profiler/snapshots_transporter.rb +109 -0
  33. data/lib/mini_profiler/storage/abstract_store.rb +78 -0
  34. data/lib/mini_profiler/storage/memory_store.rb +54 -5
  35. data/lib/mini_profiler/storage/redis_store.rb +134 -0
  36. data/lib/mini_profiler/timer_struct/page.rb +52 -2
  37. data/lib/mini_profiler/timer_struct/sql.rb +2 -2
  38. data/lib/mini_profiler/version.rb +1 -1
  39. data/lib/mini_profiler_rails/railtie.rb +11 -0
  40. data/lib/patches/db/mysql2.rb +4 -27
  41. data/lib/patches/db/mysql2/alias_method.rb +30 -0
  42. data/lib/patches/db/mysql2/prepend.rb +34 -0
  43. data/lib/prepend_mysql2_patch.rb +5 -0
  44. data/lib/rack-mini-profiler.rb +1 -0
  45. data/rack-mini-profiler.gemspec +6 -4
  46. metadata +63 -14
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ # The best kind of instrumentation is in the actual db provider, however we don't want to double instrument
4
+
5
+ class Mysql2::Result
6
+ alias_method :each_without_profiling, :each
7
+ def each(*args, &blk)
8
+ return each_without_profiling(*args, &blk) unless defined?(@miniprofiler_sql_id)
9
+
10
+ start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
11
+ result = each_without_profiling(*args, &blk)
12
+ elapsed_time = SqlPatches.elapsed_time(start)
13
+
14
+ @miniprofiler_sql_id.report_reader_duration(elapsed_time)
15
+ result
16
+ end
17
+ end
18
+
19
+ class Mysql2::Client
20
+ alias_method :query_without_profiling, :query
21
+ def query(*args, &blk)
22
+ return query_without_profiling(*args, &blk) unless SqlPatches.should_measure?
23
+
24
+ result, record = SqlPatches.record_sql(args[0]) do
25
+ query_without_profiling(*args, &blk)
26
+ end
27
+ result.instance_variable_set("@miniprofiler_sql_id", record) if result
28
+ result
29
+ end
30
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Mysql2::Result
4
+ module MiniProfiler
5
+ def each(*args, &blk)
6
+ return super unless defined?(@miniprofiler_sql_id)
7
+
8
+ start = Process.clock_gettime(Process::CLOCK_MONOTONIC)
9
+ result = super
10
+ elapsed_time = SqlPatches.elapsed_time(start)
11
+
12
+ @miniprofiler_sql_id.report_reader_duration(elapsed_time)
13
+ result
14
+ end
15
+ end
16
+
17
+ prepend MiniProfiler
18
+ end
19
+
20
+ class Mysql2::Client
21
+ module MiniProfiler
22
+ def query(*args, &blk)
23
+ return super unless SqlPatches.should_measure?
24
+
25
+ result, record = SqlPatches.record_sql(args[0]) do
26
+ super
27
+ end
28
+ result.instance_variable_set("@miniprofiler_sql_id", record) if result
29
+ result
30
+ end
31
+ end
32
+
33
+ prepend MiniProfiler
34
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Rack
4
+ MINI_PROFILER_PREPEND_MYSQL2_PATCH = true
5
+ end
@@ -26,6 +26,7 @@ require 'mini_profiler/profiling_methods'
26
26
  require 'mini_profiler/context'
27
27
  require 'mini_profiler/client_settings'
28
28
  require 'mini_profiler/gc_profiler'
29
+ require 'mini_profiler/snapshots_transporter'
29
30
  require 'mini_profiler/profiler'
30
31
  require 'patches/sql_patches'
31
32
  require 'patches/net_patches'
@@ -28,20 +28,22 @@ Gem::Specification.new do |s|
28
28
  'changelog_uri' => 'https://github.com/MiniProfiler/rack-mini-profiler/blob/master/CHANGELOG.md'
29
29
  }
30
30
 
31
- s.add_development_dependency 'rake', '< 11'
31
+ s.add_development_dependency 'rake'
32
32
  s.add_development_dependency 'rack-test'
33
33
  s.add_development_dependency 'dalli'
34
34
  s.add_development_dependency 'rspec', '~> 3.6.0'
35
35
  s.add_development_dependency 'redis'
36
36
  s.add_development_dependency 'sassc'
37
- s.add_development_dependency 'flamegraph'
37
+ s.add_development_dependency 'stackprof'
38
38
  s.add_development_dependency 'rubocop'
39
39
  s.add_development_dependency 'mini_racer'
40
40
  s.add_development_dependency 'nokogiri'
41
41
  s.add_development_dependency 'rubocop-discourse'
42
42
  s.add_development_dependency 'listen'
43
- s.add_development_dependency 'webpacker', '~> 5.1'
44
- s.add_development_dependency 'rails', '~> 5.1'
43
+ s.add_development_dependency 'webpacker'
44
+ s.add_development_dependency 'rails', '~> 6.0'
45
+ s.add_development_dependency 'webmock', '3.9.1'
46
+ s.add_development_dependency 'rubyzip'
45
47
 
46
48
  s.require_paths = ["lib"]
47
49
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-mini-profiler
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.4
4
+ version: 2.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Saffron
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2020-08-03 00:00:00.000000000 Z
13
+ date: 2021-01-28 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rack
@@ -30,16 +30,16 @@ dependencies:
30
30
  name: rake
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - "<"
33
+ - - ">="
34
34
  - !ruby/object:Gem::Version
35
- version: '11'
35
+ version: '0'
36
36
  type: :development
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - "<"
40
+ - - ">="
41
41
  - !ruby/object:Gem::Version
42
- version: '11'
42
+ version: '0'
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: rack-test
45
45
  requirement: !ruby/object:Gem::Requirement
@@ -111,7 +111,7 @@ dependencies:
111
111
  - !ruby/object:Gem::Version
112
112
  version: '0'
113
113
  - !ruby/object:Gem::Dependency
114
- name: flamegraph
114
+ name: stackprof
115
115
  requirement: !ruby/object:Gem::Requirement
116
116
  requirements:
117
117
  - - ">="
@@ -198,30 +198,58 @@ dependencies:
198
198
  name: webpacker
199
199
  requirement: !ruby/object:Gem::Requirement
200
200
  requirements:
201
- - - "~>"
201
+ - - ">="
202
202
  - !ruby/object:Gem::Version
203
- version: '5.1'
203
+ version: '0'
204
204
  type: :development
205
205
  prerelease: false
206
206
  version_requirements: !ruby/object:Gem::Requirement
207
207
  requirements:
208
- - - "~>"
208
+ - - ">="
209
209
  - !ruby/object:Gem::Version
210
- version: '5.1'
210
+ version: '0'
211
211
  - !ruby/object:Gem::Dependency
212
212
  name: rails
213
213
  requirement: !ruby/object:Gem::Requirement
214
214
  requirements:
215
215
  - - "~>"
216
216
  - !ruby/object:Gem::Version
217
- version: '5.1'
217
+ version: '6.0'
218
218
  type: :development
219
219
  prerelease: false
220
220
  version_requirements: !ruby/object:Gem::Requirement
221
221
  requirements:
222
222
  - - "~>"
223
223
  - !ruby/object:Gem::Version
224
- version: '5.1'
224
+ version: '6.0'
225
+ - !ruby/object:Gem::Dependency
226
+ name: webmock
227
+ requirement: !ruby/object:Gem::Requirement
228
+ requirements:
229
+ - - '='
230
+ - !ruby/object:Gem::Version
231
+ version: 3.9.1
232
+ type: :development
233
+ prerelease: false
234
+ version_requirements: !ruby/object:Gem::Requirement
235
+ requirements:
236
+ - - '='
237
+ - !ruby/object:Gem::Version
238
+ version: 3.9.1
239
+ - !ruby/object:Gem::Dependency
240
+ name: rubyzip
241
+ requirement: !ruby/object:Gem::Requirement
242
+ requirements:
243
+ - - ">="
244
+ - !ruby/object:Gem::Version
245
+ version: '0'
246
+ type: :development
247
+ prerelease: false
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ requirements:
250
+ - - ">="
251
+ - !ruby/object:Gem::Version
252
+ version: '0'
225
253
  description: Profiling toolkit for Rack applications with Rails integration. Client
226
254
  Side profiling, DB profiling and Server profiling.
227
255
  email: sam.saffron@gmail.com
@@ -244,7 +272,24 @@ files:
244
272
  - lib/html/includes.tmpl
245
273
  - lib/html/pretty-print.js
246
274
  - lib/html/profile_handler.js
275
+ - lib/html/rack-mini-profiler.css
276
+ - lib/html/rack-mini-profiler.js
247
277
  - lib/html/share.html
278
+ - lib/html/speedscope/LICENSE
279
+ - lib/html/speedscope/README.md
280
+ - lib/html/speedscope/demangle-cpp.1768f4cc.js
281
+ - lib/html/speedscope/favicon-16x16.f74b3187.png
282
+ - lib/html/speedscope/favicon-32x32.bc503437.png
283
+ - lib/html/speedscope/file-format-schema.json
284
+ - lib/html/speedscope/fonts/source-code-pro-regular.css
285
+ - lib/html/speedscope/fonts/source-code-pro-v13-regular.woff
286
+ - lib/html/speedscope/fonts/source-code-pro-v13-regular.woff2
287
+ - lib/html/speedscope/import.cf0fa83f.js
288
+ - lib/html/speedscope/index.html
289
+ - lib/html/speedscope/release.txt
290
+ - lib/html/speedscope/reset.8c46b7a1.css
291
+ - lib/html/speedscope/source-map.438fa06b.js
292
+ - lib/html/speedscope/speedscope.44364064.js
248
293
  - lib/html/vendor.js
249
294
  - lib/mini_profiler/asset_version.rb
250
295
  - lib/mini_profiler/client_settings.rb
@@ -253,6 +298,7 @@ files:
253
298
  - lib/mini_profiler/gc_profiler.rb
254
299
  - lib/mini_profiler/profiler.rb
255
300
  - lib/mini_profiler/profiling_methods.rb
301
+ - lib/mini_profiler/snapshots_transporter.rb
256
302
  - lib/mini_profiler/storage/abstract_store.rb
257
303
  - lib/mini_profiler/storage/file_store.rb
258
304
  - lib/mini_profiler/storage/memcache_store.rb
@@ -271,6 +317,8 @@ files:
271
317
  - lib/patches/db/mongo.rb
272
318
  - lib/patches/db/moped.rb
273
319
  - lib/patches/db/mysql2.rb
320
+ - lib/patches/db/mysql2/alias_method.rb
321
+ - lib/patches/db/mysql2/prepend.rb
274
322
  - lib/patches/db/neo4j.rb
275
323
  - lib/patches/db/nobrainer.rb
276
324
  - lib/patches/db/oracle_enhanced.rb
@@ -281,6 +329,7 @@ files:
281
329
  - lib/patches/db/sequel.rb
282
330
  - lib/patches/net_patches.rb
283
331
  - lib/patches/sql_patches.rb
332
+ - lib/prepend_mysql2_patch.rb
284
333
  - lib/prepend_net_http_patch.rb
285
334
  - lib/rack-mini-profiler.rb
286
335
  - rack-mini-profiler.gemspec
@@ -305,7 +354,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
305
354
  - !ruby/object:Gem::Version
306
355
  version: '0'
307
356
  requirements: []
308
- rubygems_version: 3.0.3
357
+ rubygems_version: 3.2.2
309
358
  signing_key:
310
359
  specification_version: 4
311
360
  summary: Profiles loading speed for rack applications.