plain_apm 0.2.9 → 0.4.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: c39a4ac239df66dd854830dcc645189a5a21aa1708acae43d2928fb03c691bd6
4
- data.tar.gz: 1acda2ec24a71c06870c32697d00f63136fad59dacecea4e21b99c5df05982cc
3
+ metadata.gz: 9c90c84af568ff044876f532e72d6275670a0866f13ca3bc81de6ef726ae4d4a
4
+ data.tar.gz: 3be569a19a2b5f7aed767336ba39490a56435608db9f387c52ca3980d0d5303c
5
5
  SHA512:
6
- metadata.gz: 3f3c3d112b0bf4b364711d0072fdea6db28da08be2cf36c82bb3c982b9b3c7ba8205caa3a642be503e731c29a88d0e8684b246291dffa24b469a2600d3c875fc
7
- data.tar.gz: c62b897b2b45e7f4bf98059d344e647099592c7b8541950d0a271b0a2ae7d8e3e70bd11a75775de0de7f0094313157cb698ccee13ec3edec2a1aee9c6090c180
6
+ metadata.gz: 681bf3e9efd941ff2dbb88e38af19ffd96d6f790756b82e831f81e4ee33cc44f1d486aac53ca0417fd1fb3990a8b19811563473d765087d96b400e3f33708f84
7
+ data.tar.gz: b5a9cd30b8fd458a95ecfb8f2e9caf5c9e6b2a6d2e98c4ad7446c06ea5539efb8eca38b35a58fd9c3578e45a5a3272c2febac68bdca092ae4283330562783145
@@ -72,7 +72,8 @@ module PlainApm
72
72
  Hooks::ActionView,
73
73
  Hooks::ActiveJob,
74
74
  Hooks::ActiveRecord,
75
- Hooks::ErrorReporter
75
+ Hooks::ErrorReporter,
76
+ Hooks::Manual
76
77
  ].map(&:new).each(&:install)
77
78
  end
78
79
 
@@ -7,19 +7,37 @@ module PlainApm
7
7
  attr_accessor :endpoint, :app_key, :enabled
8
8
 
9
9
  def initialize
10
- @enabled = enabled?
10
+ @enabled = enabled? && key_present?
11
11
  @endpoint = ENV["PLAIN_APM_ENDPOINT"] || DEFAULT_EVENT_ENDPOINT
12
- @app_key = ENV["PLAIN_APM_APP_KEY"] || warn("Missing PLAIN_APM_APP_KEY environment variable, plain_apm agent won't start.")
12
+ @app_key = ENV["PLAIN_APM_APP_KEY"]
13
+
14
+ if enabled? && !key_present?
15
+ warn("Missing PLAIN_APM_APP_KEY environment variable, plain_apm agent won't start.")
16
+ end
13
17
  end
14
18
 
15
19
  private
16
20
 
17
21
  def enabled?
18
- force = ENV["PLAIN_APM_ENABLED"] == "1"
19
- key_present = ENV["PLAIN_APM_APP_KEY"] != ""
20
- production = (ENV["RAILS_ENV"] || ENV["RACK_ENV"]) == "production"
22
+ (production? || force_enabled?) && !force_disabled?
23
+ end
24
+
25
+ def key_present?
26
+ ENV["PLAIN_APM_APP_KEY"] != ""
27
+ end
28
+
29
+ def production?
30
+ (ENV["RAILS_ENV"] || ENV["RACK_ENV"]) == "production"
31
+ end
32
+
33
+ # Allow to start in e.g. development.
34
+ def force_enabled?
35
+ ENV["PLAIN_APM_ENABLED"] == "1"
36
+ end
21
37
 
22
- key_present && (production || force)
38
+ # Do not instrument
39
+ def force_disabled?
40
+ ENV["PLAIN_APM_DISABLED"] == "1"
23
41
  end
24
42
  end
25
43
  end
@@ -0,0 +1,12 @@
1
+ module PlainApm
2
+ module Helpers
3
+ def plain_apm_context(context = {})
4
+ PlainApm::Extensions::Context.context.merge!(context)
5
+ end
6
+
7
+ def plain_apm_instrument(name, context = {}, &block)
8
+ sanitized_name = name.gsub(/\W/, "_").gsub(/(?!^)([A-Z])/) { |m| "_#{m}" }.gsub(/_+/, "_").downcase
9
+ ActiveSupport::Notifications.instrument("#{sanitized_name}.manual.plain_apm", **context, &block)
10
+ end
11
+ end
12
+ end
@@ -18,7 +18,13 @@ module PlainApm
18
18
  tool, revision = *result
19
19
 
20
20
  Agent.instance.collect(
21
- {"source" => tool, "revision" => revision, "name" => "deploy"}
21
+ {
22
+ "source" => tool,
23
+ "revision" => revision,
24
+ "name" => "deploy",
25
+ "started_at" => Time.now.to_f,
26
+ "finished_at" => Time.now.to_f
27
+ }
22
28
  )
23
29
  end
24
30
 
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module PlainApm
4
+ module Hooks
5
+ class Manual < ActiveSupportSubscriber
6
+ NOTIFICATION_PATTERN = /\A[^!]\w+\.manual\.plain_apm\Z/.freeze
7
+
8
+ private
9
+
10
+ def notification_pattern
11
+ NOTIFICATION_PATTERN
12
+ end
13
+
14
+ def payload(event)
15
+ name, source, _ = *event.name.split(".")
16
+
17
+ {
18
+ "source" => source,
19
+ "name" => name,
20
+ "backtrace" => filtered_backtrace,
21
+ "started_at" => event.time,
22
+ "finished_at" => event.end,
23
+ "allocations" => event.allocations,
24
+ "payload" => event.payload
25
+ }
26
+ end
27
+ end
28
+ end
29
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PlainApm
4
- VERSION = "0.2.9"
4
+ VERSION = "0.4.0"
5
5
  end
data/lib/plain_apm.rb CHANGED
@@ -12,10 +12,10 @@ begin
12
12
  require "rack/body_proxy"
13
13
 
14
14
  require_relative "plain_apm/extensions/context"
15
- require_relative "plain_apm/extensions/context/helpers"
16
15
  require_relative "plain_apm/extensions/context/middleware"
17
16
  require_relative "plain_apm/extensions/context/active_job" if defined?(ActiveSupport)
18
17
  require_relative "plain_apm/extensions/context/railtie" if defined?(Rails::Railtie)
18
+ require_relative "plain_apm/helpers"
19
19
  rescue LoadError
20
20
  nil
21
21
  end
@@ -31,6 +31,7 @@ require_relative "plain_apm/hooks/action_pack"
31
31
  require_relative "plain_apm/hooks/action_view"
32
32
  require_relative "plain_apm/hooks/active_job"
33
33
  require_relative "plain_apm/hooks/active_record"
34
+ require_relative "plain_apm/hooks/manual"
34
35
  require_relative "plain_apm/hooks/error_reporter"
35
36
 
36
37
  module PlainApm
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: plain_apm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.9
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - PlainAPM Team
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-10-07 00:00:00.000000000 Z
11
+ date: 2022-10-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -85,12 +85,12 @@ files:
85
85
  - lib/plain_apm/extensions/context.rb
86
86
  - lib/plain_apm/extensions/context/LICENSE.txt
87
87
  - lib/plain_apm/extensions/context/active_job.rb
88
- - lib/plain_apm/extensions/context/helpers.rb
89
88
  - lib/plain_apm/extensions/context/middleware.rb
90
89
  - lib/plain_apm/extensions/context/railtie.rb
91
90
  - lib/plain_apm/extensions/exceptions/active_job.rb
92
91
  - lib/plain_apm/extensions/exceptions/rack.rb
93
92
  - lib/plain_apm/extensions/exceptions/railtie.rb
93
+ - lib/plain_apm/helpers.rb
94
94
  - lib/plain_apm/hooks/action_mailer.rb
95
95
  - lib/plain_apm/hooks/action_pack.rb
96
96
  - lib/plain_apm/hooks/action_view.rb
@@ -99,6 +99,7 @@ files:
99
99
  - lib/plain_apm/hooks/active_support_subscriber.rb
100
100
  - lib/plain_apm/hooks/deploy.rb
101
101
  - lib/plain_apm/hooks/error_reporter.rb
102
+ - lib/plain_apm/hooks/manual.rb
102
103
  - lib/plain_apm/transport.rb
103
104
  - lib/plain_apm/version.rb
104
105
  homepage: https://plainapm.com
@@ -1,11 +0,0 @@
1
- module PlainApm
2
- module Extensions
3
- module Context
4
- module Helpers
5
- def plain_apm_context(context = {})
6
- PlainApm::Extensions::Context.context.merge!(context)
7
- end
8
- end
9
- end
10
- end
11
- end