rack-mini-profiler 2.0.4 → 2.3.1

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.
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.