app_profiler 0.5.0 → 0.6.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2e510f0a0d20ec300e0ae5593adbdb03195202ea68e6a8ecad5fb13abfef9473
4
- data.tar.gz: 66dd66baaa5e863a0b0311431da9ab17f794c3e8902e73b6d29f998c0867db74
3
+ metadata.gz: eded37ca4bd7b77dcf4bd68a1814eb0900ca1ba7e2cfdb0c5d2490d68f61ba7d
4
+ data.tar.gz: e69bf61f50c4d7baf3a8d9b748fb5e295d0901fb7d0d0903d3689e230e5526df
5
5
  SHA512:
6
- metadata.gz: 67c22d47cea0a3fe91928495b4d14f476c727bd98c976bb7ae310b61b317c0a54dc91d350c870cc8cc155a044f33f49dfc5a1c739bd68609261af537c43b8913
7
- data.tar.gz: 0e57a16a1bf6195fb8b723ae213e8fb2226a7858448420ef4e495363402033f1e9612971411981f505b9901dde425fc910d82023b788e1d60311d44ff3a0d258
6
+ metadata.gz: '098504043e35bf17909c781047ba83eacdff0dffd7115e9f3910d5d3e3664ef58ee726ced428c6f5fb4750b06eb0193755d096f93d41692074e2eeb049e7f23a'
7
+ data.tar.gz: 7ea8cbe0cc7d6adfd7b386dae7386f7b08179f112d52e4280cce305e296bb70efe6baab5da983510832b4c511faa3ce9a789a377bd94a9816994c23122cec9ff
@@ -15,6 +15,10 @@ module AppProfiler
15
15
  :retained,
16
16
  ].freeze
17
17
 
18
+ PRIVATE_METADATA = [
19
+ :started_at, # started_at uses a monotonic source, not realtime
20
+ ].freeze
21
+
18
22
  class << self
19
23
  def name
20
24
  :vernier
@@ -29,7 +33,9 @@ module AppProfiler
29
33
  @mode = params.delete(:mode) || DEFAULTS[:mode]
30
34
  raise ArgumentError unless AVAILABLE_MODES.include?(@mode)
31
35
 
32
- @metadata = params.delete(:metadata)
36
+ if Gem.loaded_specs["vernier"].version < Gem::Version.new("1.7.0")
37
+ @metadata = params.delete(:metadata)
38
+ end
33
39
  clear
34
40
 
35
41
  @collector ||= ::Vernier::Collector.new(@mode, **params)
@@ -60,11 +66,19 @@ module AppProfiler
60
66
 
61
67
  return unless vernier_profile
62
68
 
69
+ # Store all vernier metadata
70
+ meta = vernier_profile.meta.reject { |k, v| k == :user_metadata || v.nil? || PRIVATE_METADATA.include?(k) }
71
+ meta.merge!(@metadata) if @metadata
72
+
73
+ # Internal metadata takes precedence over user metadata, but store
74
+ # everything in user metadata
75
+ vernier_profile.meta[:user_metadata]&.merge!(meta)
76
+
63
77
  # HACK: - "data" is private, but we want to avoid serializing to JSON then
64
78
  # parsing back from JSON by just directly getting the hash
65
79
  data = ::Vernier::Output::Firefox.new(vernier_profile).send(:data)
66
- data[:meta][:mode] = @mode # TODO: https://github.com/jhawthorn/vernier/issues/30
67
- data[:meta].merge!(@metadata) if @metadata
80
+ data[:meta][:mode] = @mode
81
+ data[:meta][:vernierUserMetadata] ||= meta # for compatibility with < 1.7.0
68
82
  @mode = nil
69
83
  @metadata = nil
70
84
 
@@ -23,7 +23,7 @@ module AppProfiler
23
23
  end
24
24
 
25
25
  def from_vernier(data)
26
- options = INTERNAL_METADATA_KEYS.map { |key| [key, data[:meta]&.delete(key)] }.to_h
26
+ options = INTERNAL_METADATA_KEYS.map { |key| [key, data[:meta]&.[](:vernierUserMetadata)&.delete(key)] }.to_h
27
27
 
28
28
  VernierProfile.new(data, **options).tap do |profile|
29
29
  raise ArgumentError, "invalid profile data" unless profile.valid?
@@ -14,6 +14,7 @@ module AppProfiler
14
14
 
15
15
  def initialize(data, id: nil, context: nil)
16
16
  data[:meta] ||= {}
17
+ data[:meta][:vernierUserMetadata] ||= {}
17
18
  super(data, id: id, context: context)
18
19
  end
19
20
 
@@ -22,7 +23,7 @@ module AppProfiler
22
23
  end
23
24
 
24
25
  def metadata
25
- @data[:meta]
26
+ @data[:meta][:vernierUserMetadata]
26
27
  end
27
28
 
28
29
  def format
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AppProfiler
4
- VERSION = "0.5.0"
4
+ VERSION = "0.6.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: app_profiler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gannon McGibbon
@@ -28,6 +28,48 @@ dependencies:
28
28
  - - ">="
29
29
  - !ruby/object:Gem::Version
30
30
  version: '5.2'
31
+ - !ruby/object:Gem::Dependency
32
+ name: base64
33
+ requirement: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ">="
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ version: '0'
45
+ - !ruby/object:Gem::Dependency
46
+ name: bigdecimal
47
+ requirement: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ version: '0'
52
+ type: :runtime
53
+ prerelease: false
54
+ version_requirements: !ruby/object:Gem::Requirement
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ version: '0'
59
+ - !ruby/object:Gem::Dependency
60
+ name: mutex_m
61
+ requirement: !ruby/object:Gem::Requirement
62
+ requirements:
63
+ - - ">="
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ type: :runtime
67
+ prerelease: false
68
+ version_requirements: !ruby/object:Gem::Requirement
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: '0'
31
73
  - !ruby/object:Gem::Dependency
32
74
  name: rack
33
75
  requirement: !ruby/object:Gem::Requirement
@@ -194,14 +236,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
194
236
  requirements:
195
237
  - - ">="
196
238
  - !ruby/object:Gem::Version
197
- version: '2.7'
239
+ version: 3.2.1
198
240
  required_rubygems_version: !ruby/object:Gem::Requirement
199
241
  requirements:
200
242
  - - ">="
201
243
  - !ruby/object:Gem::Version
202
244
  version: '0'
203
245
  requirements: []
204
- rubygems_version: 4.0.6
246
+ rubygems_version: 4.0.10
205
247
  specification_version: 4
206
248
  summary: Collect performance profiles for your Rails application.
207
249
  test_files: []