appsignal 2.10.9.beta.1 → 2.11.0.beta.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/.semaphore/semaphore.yml +75 -61
- data/CHANGELOG.md +21 -2
- data/build_matrix.yml +13 -7
- data/ext/agent.yml +19 -19
- data/ext/appsignal_extension.c +10 -1
- data/gemfiles/padrino.gemfile +2 -2
- data/gemfiles/rails-4.2.gemfile +9 -2
- data/gemfiles/rails-5.0.gemfile +1 -0
- data/gemfiles/rails-5.1.gemfile +1 -0
- data/gemfiles/rails-5.2.gemfile +1 -0
- data/gemfiles/rails-6.0.gemfile +1 -0
- data/gemfiles/resque-1.gemfile +7 -0
- data/gemfiles/{resque.gemfile → resque-2.gemfile} +1 -1
- data/lib/appsignal.rb +21 -1
- data/lib/appsignal/capistrano.rb +2 -0
- data/lib/appsignal/config.rb +6 -2
- data/lib/appsignal/environment.rb +126 -0
- data/lib/appsignal/extension/jruby.rb +10 -0
- data/lib/appsignal/hooks.rb +2 -0
- data/lib/appsignal/hooks/active_job.rb +89 -0
- data/lib/appsignal/hooks/net_http.rb +2 -0
- data/lib/appsignal/hooks/puma.rb +2 -58
- data/lib/appsignal/hooks/redis.rb +2 -0
- data/lib/appsignal/hooks/resque.rb +60 -0
- data/lib/appsignal/hooks/sequel.rb +2 -0
- data/lib/appsignal/hooks/sidekiq.rb +18 -191
- data/lib/appsignal/integrations/object.rb +4 -0
- data/lib/appsignal/integrations/que.rb +1 -1
- data/lib/appsignal/integrations/resque.rb +9 -12
- data/lib/appsignal/integrations/resque_active_job.rb +9 -24
- data/lib/appsignal/probes/puma.rb +61 -0
- data/lib/appsignal/probes/sidekiq.rb +102 -0
- data/lib/appsignal/rack/js_exception_catcher.rb +5 -2
- data/lib/appsignal/transaction.rb +32 -7
- data/lib/appsignal/utils/deprecation_message.rb +5 -1
- data/lib/appsignal/version.rb +1 -1
- data/lib/puma/plugin/appsignal.rb +2 -1
- data/spec/lib/appsignal/config_spec.rb +6 -1
- data/spec/lib/appsignal/environment_spec.rb +167 -0
- data/spec/lib/appsignal/hooks/activejob_spec.rb +458 -0
- data/spec/lib/appsignal/hooks/puma_spec.rb +2 -181
- data/spec/lib/appsignal/hooks/resque_spec.rb +185 -0
- data/spec/lib/appsignal/hooks/sidekiq_spec.rb +292 -546
- data/spec/lib/appsignal/integrations/padrino_spec.rb +1 -1
- data/spec/lib/appsignal/integrations/que_spec.rb +25 -6
- data/spec/lib/appsignal/integrations/resque_active_job_spec.rb +20 -137
- data/spec/lib/appsignal/integrations/resque_spec.rb +20 -85
- data/spec/lib/appsignal/probes/puma_spec.rb +180 -0
- data/spec/lib/appsignal/probes/sidekiq_spec.rb +204 -0
- data/spec/lib/appsignal/rack/js_exception_catcher_spec.rb +9 -4
- data/spec/lib/appsignal/transaction_spec.rb +35 -20
- data/spec/lib/appsignal_spec.rb +22 -0
- data/spec/lib/puma/appsignal_spec.rb +1 -1
- data/spec/support/helpers/action_mailer_helpers.rb +25 -0
- data/spec/support/helpers/dependency_helper.rb +12 -0
- data/spec/support/helpers/env_helpers.rb +1 -1
- data/spec/support/helpers/environment_metdata_helper.rb +16 -0
- data/spec/support/helpers/transaction_helpers.rb +6 -0
- data/spec/support/stubs/sidekiq/api.rb +2 -2
- metadata +27 -7
data/ext/agent.yml
CHANGED
@@ -1,70 +1,70 @@
|
|
1
1
|
---
|
2
|
-
version:
|
2
|
+
version: a5b5db2
|
3
3
|
mirrors:
|
4
4
|
- https://appsignal-agent-releases.global.ssl.fastly.net
|
5
5
|
- https://d135dj0rjqvssy.cloudfront.net
|
6
6
|
triples:
|
7
7
|
x86_64-darwin:
|
8
8
|
static:
|
9
|
-
checksum:
|
9
|
+
checksum: 60236d6cfe998d5d9e8a8d1c493b0be956c35b449dd16c47c1b9d4dada73c57e
|
10
10
|
filename: appsignal-x86_64-darwin-all-static.tar.gz
|
11
11
|
dynamic:
|
12
|
-
checksum:
|
12
|
+
checksum: e69a6fab6b854345bcecba2eb06de38f00d8a9fc67bb04502feab13e987699b4
|
13
13
|
filename: appsignal-x86_64-darwin-all-dynamic.tar.gz
|
14
14
|
universal-darwin:
|
15
15
|
static:
|
16
|
-
checksum:
|
16
|
+
checksum: 60236d6cfe998d5d9e8a8d1c493b0be956c35b449dd16c47c1b9d4dada73c57e
|
17
17
|
filename: appsignal-x86_64-darwin-all-static.tar.gz
|
18
18
|
dynamic:
|
19
|
-
checksum:
|
19
|
+
checksum: e69a6fab6b854345bcecba2eb06de38f00d8a9fc67bb04502feab13e987699b4
|
20
20
|
filename: appsignal-x86_64-darwin-all-dynamic.tar.gz
|
21
21
|
i686-linux:
|
22
22
|
static:
|
23
|
-
checksum:
|
23
|
+
checksum: 31d4400ec70ab05a1cf960b7e3bd46c3e8b3e0d4e2cf3be9bd20ed97ff5291e6
|
24
24
|
filename: appsignal-i686-linux-all-static.tar.gz
|
25
25
|
dynamic:
|
26
|
-
checksum:
|
26
|
+
checksum: a2625de08adbf2804230774bb9d7ad7b4c568a5525a5300d41a450334c4b5528
|
27
27
|
filename: appsignal-i686-linux-all-dynamic.tar.gz
|
28
28
|
x86-linux:
|
29
29
|
static:
|
30
|
-
checksum:
|
30
|
+
checksum: 31d4400ec70ab05a1cf960b7e3bd46c3e8b3e0d4e2cf3be9bd20ed97ff5291e6
|
31
31
|
filename: appsignal-i686-linux-all-static.tar.gz
|
32
32
|
dynamic:
|
33
|
-
checksum:
|
33
|
+
checksum: a2625de08adbf2804230774bb9d7ad7b4c568a5525a5300d41a450334c4b5528
|
34
34
|
filename: appsignal-i686-linux-all-dynamic.tar.gz
|
35
35
|
i686-linux-musl:
|
36
36
|
static:
|
37
|
-
checksum:
|
37
|
+
checksum: 18a5648c469718676e0c4b2925fbdd04a6d9b916ff778571a48d4ff0ffa944b6
|
38
38
|
filename: appsignal-i686-linux-musl-all-static.tar.gz
|
39
39
|
x86-linux-musl:
|
40
40
|
static:
|
41
|
-
checksum:
|
41
|
+
checksum: 18a5648c469718676e0c4b2925fbdd04a6d9b916ff778571a48d4ff0ffa944b6
|
42
42
|
filename: appsignal-i686-linux-musl-all-static.tar.gz
|
43
43
|
x86_64-linux:
|
44
44
|
static:
|
45
|
-
checksum:
|
45
|
+
checksum: df100f661e19266fe92a19ae44407f413e14f1bb975261542e3b738c5215889a
|
46
46
|
filename: appsignal-x86_64-linux-all-static.tar.gz
|
47
47
|
dynamic:
|
48
|
-
checksum:
|
48
|
+
checksum: 4d988176e9419fe553cbab10ebc4eab617fdd3806682cbb35ab01d1f02bcd297
|
49
49
|
filename: appsignal-x86_64-linux-all-dynamic.tar.gz
|
50
50
|
x86_64-linux-musl:
|
51
51
|
static:
|
52
|
-
checksum:
|
52
|
+
checksum: 265d42b764789b105cc5a8b5117ec1dbc07265f870e936661a8b6211c04de05a
|
53
53
|
filename: appsignal-x86_64-linux-musl-all-static.tar.gz
|
54
54
|
dynamic:
|
55
|
-
checksum:
|
55
|
+
checksum: 0b96c3f03b6c2943b2b51bfcdd56aa90e0869a5890dedf7ce30df9a8fe4f6d9a
|
56
56
|
filename: appsignal-x86_64-linux-musl-all-dynamic.tar.gz
|
57
57
|
x86_64-freebsd:
|
58
58
|
static:
|
59
|
-
checksum:
|
59
|
+
checksum: 0ffbe3fa91e5b1687693fa9af8e9c6bdccb98ffd6122d8ccd86bb81fbea91e3f
|
60
60
|
filename: appsignal-x86_64-freebsd-all-static.tar.gz
|
61
61
|
dynamic:
|
62
|
-
checksum:
|
62
|
+
checksum: d0f02acf08c3ab4601b2a1e26c899bc14274b742d6af1b5701646781c6c0e50c
|
63
63
|
filename: appsignal-x86_64-freebsd-all-dynamic.tar.gz
|
64
64
|
amd64-freebsd:
|
65
65
|
static:
|
66
|
-
checksum:
|
66
|
+
checksum: 0ffbe3fa91e5b1687693fa9af8e9c6bdccb98ffd6122d8ccd86bb81fbea91e3f
|
67
67
|
filename: appsignal-x86_64-freebsd-all-static.tar.gz
|
68
68
|
dynamic:
|
69
|
-
checksum:
|
69
|
+
checksum: d0f02acf08c3ab4601b2a1e26c899bc14274b742d6af1b5701646781c6c0e50c
|
70
70
|
filename: appsignal-x86_64-freebsd-all-dynamic.tar.gz
|
data/ext/appsignal_extension.c
CHANGED
@@ -639,6 +639,14 @@ static VALUE running_in_container() {
|
|
639
639
|
return appsignal_running_in_container() == 1 ? Qtrue : Qfalse;
|
640
640
|
}
|
641
641
|
|
642
|
+
static VALUE set_environment_metadata(VALUE self, VALUE key, VALUE value) {
|
643
|
+
appsignal_set_environment_metadata(
|
644
|
+
make_appsignal_string(key),
|
645
|
+
make_appsignal_string(value)
|
646
|
+
);
|
647
|
+
return Qnil;
|
648
|
+
}
|
649
|
+
|
642
650
|
void Init_appsignal_extension(void) {
|
643
651
|
Appsignal = rb_define_module("Appsignal");
|
644
652
|
Extension = rb_define_class_under(Appsignal, "Extension", rb_cObject);
|
@@ -697,9 +705,10 @@ void Init_appsignal_extension(void) {
|
|
697
705
|
// Get JSON content of a data
|
698
706
|
rb_define_method(Data, "to_s", data_to_s, 0);
|
699
707
|
|
700
|
-
//
|
708
|
+
// Other helper methods
|
701
709
|
rb_define_singleton_method(Extension, "install_allocation_event_hook", install_allocation_event_hook, 0);
|
702
710
|
rb_define_singleton_method(Extension, "running_in_container?", running_in_container, 0);
|
711
|
+
rb_define_singleton_method(Extension, "set_environment_metadata", set_environment_metadata, 2);
|
703
712
|
|
704
713
|
// Metrics
|
705
714
|
rb_define_singleton_method(Extension, "set_gauge", set_gauge, 3);
|
data/gemfiles/padrino.gemfile
CHANGED
data/gemfiles/rails-4.2.gemfile
CHANGED
@@ -3,8 +3,15 @@ source 'https://rubygems.org'
|
|
3
3
|
gem 'rails', '~> 4.2.0'
|
4
4
|
gem 'mime-types', '~> 2.6'
|
5
5
|
|
6
|
-
|
6
|
+
ruby_version = Gem::Version.new(RUBY_VERSION)
|
7
|
+
if ruby_version < Gem::Version.new("2.3.0")
|
8
|
+
gem "sidekiq", "~> 4.0"
|
9
|
+
else
|
10
|
+
gem "sidekiq"
|
11
|
+
end
|
7
12
|
|
8
|
-
if
|
13
|
+
if ruby_version < Gem::Version.new("2.1.0")
|
9
14
|
gem 'nokogiri', '~> 1.6.0'
|
10
15
|
end
|
16
|
+
|
17
|
+
gemspec :path => '../'
|
data/gemfiles/rails-5.0.gemfile
CHANGED
data/gemfiles/rails-5.1.gemfile
CHANGED
data/gemfiles/rails-5.2.gemfile
CHANGED
data/gemfiles/rails-6.0.gemfile
CHANGED
data/lib/appsignal.rb
CHANGED
@@ -134,11 +134,17 @@ module Appsignal
|
|
134
134
|
|
135
135
|
if config[:enable_allocation_tracking] && !Appsignal::System.jruby?
|
136
136
|
Appsignal::Extension.install_allocation_event_hook
|
137
|
+
Appsignal::Environment.report_enabled("allocation_tracking")
|
137
138
|
end
|
138
139
|
|
139
|
-
|
140
|
+
if config[:enable_gc_instrumentation]
|
141
|
+
GC::Profiler.enable
|
142
|
+
Appsignal::Environment.report_enabled("gc_instrumentation")
|
143
|
+
end
|
140
144
|
|
141
145
|
Appsignal::Minutely.start if config[:enable_minutely_probes]
|
146
|
+
|
147
|
+
collect_environment_metadata
|
142
148
|
else
|
143
149
|
logger.info("Not starting, not active for #{config.env}")
|
144
150
|
end
|
@@ -309,9 +315,23 @@ module Appsignal
|
|
309
315
|
logger.warn "Unable to start logger with log path '#{path}'."
|
310
316
|
logger.warn error
|
311
317
|
end
|
318
|
+
|
319
|
+
def collect_environment_metadata
|
320
|
+
Appsignal::Environment.report("ruby_version") do
|
321
|
+
"#{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}"
|
322
|
+
end
|
323
|
+
Appsignal::Environment.report("ruby_engine") { RUBY_ENGINE }
|
324
|
+
if defined?(RUBY_ENGINE_VERSION)
|
325
|
+
Appsignal::Environment.report("ruby_engine_version") do
|
326
|
+
RUBY_ENGINE_VERSION
|
327
|
+
end
|
328
|
+
end
|
329
|
+
Appsignal::Environment.report_supported_gems
|
330
|
+
end
|
312
331
|
end
|
313
332
|
end
|
314
333
|
|
334
|
+
require "appsignal/environment"
|
315
335
|
require "appsignal/system"
|
316
336
|
require "appsignal/utils"
|
317
337
|
require "appsignal/extension"
|
data/lib/appsignal/capistrano.rb
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
require "appsignal"
|
4
4
|
require "capistrano/version"
|
5
5
|
|
6
|
+
Appsignal::Environment.report_enabled("capistrano")
|
7
|
+
|
6
8
|
if defined?(Capistrano::VERSION) && Gem::Version.new(Capistrano::VERSION) >= Gem::Version.new(3)
|
7
9
|
# Capistrano 3+
|
8
10
|
load File.expand_path("../integrations/capistrano/appsignal.cap", __FILE__)
|
data/lib/appsignal/config.rb
CHANGED
@@ -18,6 +18,7 @@ module Appsignal
|
|
18
18
|
:ignore_namespaces => [],
|
19
19
|
:filter_parameters => [],
|
20
20
|
:filter_session_data => [],
|
21
|
+
:send_environment_metadata => true,
|
21
22
|
:send_params => true,
|
22
23
|
:request_headers => %w[
|
23
24
|
HTTP_ACCEPT HTTP_ACCEPT_CHARSET HTTP_ACCEPT_ENCODING
|
@@ -62,6 +63,7 @@ module Appsignal
|
|
62
63
|
"APPSIGNAL_IGNORE_NAMESPACES" => :ignore_namespaces,
|
63
64
|
"APPSIGNAL_FILTER_PARAMETERS" => :filter_parameters,
|
64
65
|
"APPSIGNAL_FILTER_SESSION_DATA" => :filter_session_data,
|
66
|
+
"APPSIGNAL_SEND_ENVIRONMENT_METADATA" => :send_environment_metadata,
|
65
67
|
"APPSIGNAL_SEND_PARAMS" => :send_params,
|
66
68
|
"APPSIGNAL_HTTP_PROXY" => :http_proxy,
|
67
69
|
"APPSIGNAL_ENABLE_ALLOCATION_TRACKING" => :enable_allocation_tracking,
|
@@ -222,6 +224,7 @@ module Appsignal
|
|
222
224
|
ENV["_APPSIGNAL_DNS_SERVERS"] = config_hash[:dns_servers].join(",")
|
223
225
|
ENV["_APPSIGNAL_FILES_WORLD_ACCESSIBLE"] = config_hash[:files_world_accessible].to_s
|
224
226
|
ENV["_APPSIGNAL_TRANSACTION_DEBUG_MODE"] = config_hash[:transaction_debug_mode].to_s
|
227
|
+
ENV["_APPSIGNAL_SEND_ENVIRONMENT_METADATA"] = config_hash[:send_environment_metadata].to_s
|
225
228
|
ENV["_APP_REVISION"] = config_hash[:revision].to_s
|
226
229
|
end
|
227
230
|
|
@@ -337,8 +340,9 @@ module Appsignal
|
|
337
340
|
APPSIGNAL_SKIP_SESSION_DATA APPSIGNAL_ENABLE_FRONTEND_ERROR_CATCHING
|
338
341
|
APPSIGNAL_ENABLE_ALLOCATION_TRACKING APPSIGNAL_ENABLE_GC_INSTRUMENTATION
|
339
342
|
APPSIGNAL_RUNNING_IN_CONTAINER APPSIGNAL_ENABLE_HOST_METRICS
|
340
|
-
APPSIGNAL_SEND_PARAMS
|
341
|
-
APPSIGNAL_FILES_WORLD_ACCESSIBLE
|
343
|
+
APPSIGNAL_SEND_ENVIRONMENT_METADATA APPSIGNAL_SEND_PARAMS
|
344
|
+
APPSIGNAL_ENABLE_MINUTELY_PROBES APPSIGNAL_FILES_WORLD_ACCESSIBLE
|
345
|
+
APPSIGNAL_TRANSACTION_DEBUG_MODE].each do |var|
|
342
346
|
env_var = ENV[var]
|
343
347
|
next unless env_var
|
344
348
|
config[ENV_TO_KEY_MAPPING[var]] = env_var.casecmp("true").zero?
|
@@ -0,0 +1,126 @@
|
|
1
|
+
module Appsignal
|
2
|
+
# @api private
|
3
|
+
class Environment
|
4
|
+
# Add environment metadata.
|
5
|
+
#
|
6
|
+
# The key and value of the environment metadata must be a String, even if
|
7
|
+
# it's actually of another type.
|
8
|
+
#
|
9
|
+
# The value of the environment metadata is given as a block that captures
|
10
|
+
# errors that might be raised while fetching the value. It will not
|
11
|
+
# re-raise errors, but instead log them using the {Appsignal.logger}. This
|
12
|
+
# ensures AppSignal will not cause an error in the application when
|
13
|
+
# collecting this metadata.
|
14
|
+
#
|
15
|
+
# @example Reporting a key and value
|
16
|
+
# Appsignal::Environment.report("ruby_version") { RUBY_VERSION }
|
17
|
+
#
|
18
|
+
# @example When a value is nil
|
19
|
+
# Appsignal::Environment.report("ruby_version") { nil }
|
20
|
+
# # Key and value do not get reported. A warning gets logged instead.
|
21
|
+
#
|
22
|
+
# @example When an error occurs
|
23
|
+
# Appsignal::Environment.report("ruby_version") { raise "uh oh" }
|
24
|
+
# # Error does not get reraised. A warning gets logged instead.
|
25
|
+
#
|
26
|
+
# @param key [String] The name of the key of the environment metadata value.
|
27
|
+
# @yieldreturn [String] The value of the key of the environment metadata.
|
28
|
+
# @return [void]
|
29
|
+
def self.report(key)
|
30
|
+
key =
|
31
|
+
case key
|
32
|
+
when String
|
33
|
+
key
|
34
|
+
else
|
35
|
+
Appsignal.logger.error "Unable to report on environment metadata: " \
|
36
|
+
"Unsupported value type for #{key.inspect}"
|
37
|
+
return
|
38
|
+
end
|
39
|
+
|
40
|
+
yielded_value =
|
41
|
+
begin
|
42
|
+
yield
|
43
|
+
rescue => e
|
44
|
+
Appsignal.logger.error \
|
45
|
+
"Unable to report on environment metadata #{key.inspect}:\n" \
|
46
|
+
"#{e.class}: #{e}"
|
47
|
+
return
|
48
|
+
end
|
49
|
+
|
50
|
+
value =
|
51
|
+
case yielded_value
|
52
|
+
when TrueClass, FalseClass
|
53
|
+
yielded_value.to_s
|
54
|
+
when String
|
55
|
+
yielded_value
|
56
|
+
else
|
57
|
+
Appsignal.logger.error "Unable to report on environment metadata " \
|
58
|
+
"#{key.inspect}: Unsupported value type for " \
|
59
|
+
"#{yielded_value.inspect}"
|
60
|
+
return
|
61
|
+
end
|
62
|
+
|
63
|
+
Appsignal::Extension.set_environment_metadata(key, value)
|
64
|
+
rescue => e
|
65
|
+
Appsignal.logger.error "Unable to report on environment metadata:\n" \
|
66
|
+
"#{e.class}: #{e}"
|
67
|
+
end
|
68
|
+
|
69
|
+
# @see report_supported_gems
|
70
|
+
SUPPORTED_GEMS = %w[
|
71
|
+
actioncable
|
72
|
+
activejob
|
73
|
+
capistrano
|
74
|
+
celluloid
|
75
|
+
data_mapper
|
76
|
+
delayed_job
|
77
|
+
mongo_ruby_driver
|
78
|
+
padrino
|
79
|
+
passenger
|
80
|
+
puma
|
81
|
+
que
|
82
|
+
rack
|
83
|
+
rails
|
84
|
+
rake
|
85
|
+
redis
|
86
|
+
resque
|
87
|
+
sequel
|
88
|
+
shoryuken
|
89
|
+
sidekiq
|
90
|
+
sinatra
|
91
|
+
unicorn
|
92
|
+
webmachine
|
93
|
+
].freeze
|
94
|
+
|
95
|
+
# Report on the list of AppSignal supported gems
|
96
|
+
#
|
97
|
+
# This list is used to report if which AppSignal supported gems are present
|
98
|
+
# in this app and what version. This data will help AppSignal improve its
|
99
|
+
# support by knowing what gems and versions of gems it still needs to
|
100
|
+
# support or can drop support for.
|
101
|
+
#
|
102
|
+
# It will ask Bundler to report name and version information from the gems
|
103
|
+
# that are present in the app bundle.
|
104
|
+
def self.report_supported_gems
|
105
|
+
return unless defined?(Bundler) # Do nothing if Bundler is not present
|
106
|
+
|
107
|
+
bundle_gem_specs = ::Bundler.rubygems.all_specs
|
108
|
+
SUPPORTED_GEMS.each do |gem_name|
|
109
|
+
gem_spec = bundle_gem_specs.find { |spec| spec.name == gem_name }
|
110
|
+
next unless gem_spec
|
111
|
+
|
112
|
+
report("ruby_#{gem_name}_version") { gem_spec.version.to_s }
|
113
|
+
end
|
114
|
+
rescue => e
|
115
|
+
Appsignal.logger.error "Unable to report supported gems:\n" \
|
116
|
+
"#{e.class}: #{e}"
|
117
|
+
end
|
118
|
+
|
119
|
+
def self.report_enabled(feature)
|
120
|
+
Appsignal::Environment.report("ruby_#{feature}_enabled") { true }
|
121
|
+
rescue => e
|
122
|
+
Appsignal.logger.error "Unable to report integration enabled:\n" \
|
123
|
+
"#{e.class}: #{e}"
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
@@ -60,6 +60,9 @@ module Appsignal
|
|
60
60
|
[:appsignal_string],
|
61
61
|
:appsignal_string
|
62
62
|
attach_function :appsignal_running_in_container, [], :bool
|
63
|
+
attach_function :appsignal_set_environment_metadata,
|
64
|
+
[:appsignal_string, :appsignal_string],
|
65
|
+
:void
|
63
66
|
|
64
67
|
# Metrics methods
|
65
68
|
attach_function :appsignal_set_gauge,
|
@@ -224,6 +227,13 @@ module Appsignal
|
|
224
227
|
appsignal_running_in_container
|
225
228
|
end
|
226
229
|
|
230
|
+
def set_environment_metadata(key, value)
|
231
|
+
appsignal_set_environment_metadata(
|
232
|
+
make_appsignal_string(key),
|
233
|
+
make_appsignal_string(value)
|
234
|
+
)
|
235
|
+
end
|
236
|
+
|
227
237
|
def set_gauge(key, value, tags)
|
228
238
|
appsignal_set_gauge(make_appsignal_string(key), value, tags.pointer)
|
229
239
|
end
|
data/lib/appsignal/hooks.rb
CHANGED
@@ -73,6 +73,7 @@ module Appsignal
|
|
73
73
|
end
|
74
74
|
|
75
75
|
require "appsignal/hooks/action_cable"
|
76
|
+
require "appsignal/hooks/active_job"
|
76
77
|
require "appsignal/hooks/active_support_notifications"
|
77
78
|
require "appsignal/hooks/celluloid"
|
78
79
|
require "appsignal/hooks/delayed_job"
|
@@ -81,6 +82,7 @@ require "appsignal/hooks/passenger"
|
|
81
82
|
require "appsignal/hooks/puma"
|
82
83
|
require "appsignal/hooks/rake"
|
83
84
|
require "appsignal/hooks/redis"
|
85
|
+
require "appsignal/hooks/resque"
|
84
86
|
require "appsignal/hooks/sequel"
|
85
87
|
require "appsignal/hooks/shoryuken"
|
86
88
|
require "appsignal/hooks/sidekiq"
|