appsignal 2.11.0.beta.2-java → 2.11.1.beta.2-java
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 +4 -4
- data/.semaphore/semaphore.yml +57 -1
- data/CHANGELOG.md +28 -0
- data/README.md +11 -5
- data/Rakefile +27 -9
- data/appsignal.gemspec +1 -1
- data/build_matrix.yml +2 -2
- data/ext/Rakefile +2 -0
- data/ext/agent.yml +17 -25
- data/ext/appsignal_extension.c +1 -1
- data/ext/base.rb +7 -0
- data/ext/extconf.rb +2 -0
- data/lib/appsignal.rb +1 -0
- data/lib/appsignal/auth_check.rb +4 -2
- data/lib/appsignal/cli/diagnose.rb +1 -1
- data/lib/appsignal/config.rb +82 -17
- data/lib/appsignal/extension.rb +6 -5
- data/lib/appsignal/extension/jruby.rb +6 -5
- data/lib/appsignal/hooks.rb +24 -0
- data/lib/appsignal/hooks/action_mailer.rb +22 -0
- data/lib/appsignal/hooks/active_job.rb +53 -5
- data/lib/appsignal/hooks/active_support_notifications.rb +72 -0
- data/lib/appsignal/hooks/puma.rb +0 -1
- data/lib/appsignal/hooks/sidekiq.rb +1 -2
- data/lib/appsignal/integrations/delayed_job_plugin.rb +1 -1
- data/lib/appsignal/probes.rb +7 -0
- data/lib/appsignal/probes/puma.rb +1 -1
- data/lib/appsignal/probes/sidekiq.rb +3 -1
- data/lib/appsignal/utils/deprecation_message.rb +1 -1
- data/lib/appsignal/version.rb +1 -1
- data/spec/lib/appsignal/auth_check_spec.rb +23 -0
- data/spec/lib/appsignal/capistrano2_spec.rb +1 -1
- data/spec/lib/appsignal/capistrano3_spec.rb +1 -1
- data/spec/lib/appsignal/cli/diagnose_spec.rb +42 -0
- data/spec/lib/appsignal/config_spec.rb +39 -1
- data/spec/lib/appsignal/extension/jruby_spec.rb +31 -28
- data/spec/lib/appsignal/extension_install_failure_spec.rb +23 -0
- data/spec/lib/appsignal/hooks/action_mailer_spec.rb +54 -0
- data/spec/lib/appsignal/hooks/active_support_notifications/finish_with_state_shared_examples.rb +35 -0
- data/spec/lib/appsignal/hooks/active_support_notifications/instrument_shared_examples.rb +145 -0
- data/spec/lib/appsignal/hooks/active_support_notifications/start_finish_shared_examples.rb +69 -0
- data/spec/lib/appsignal/hooks/active_support_notifications_spec.rb +9 -137
- data/spec/lib/appsignal/hooks/activejob_spec.rb +143 -10
- data/spec/lib/appsignal/hooks/delayed_job_spec.rb +3 -14
- data/spec/lib/appsignal/hooks/sidekiq_spec.rb +7 -5
- data/spec/lib/appsignal/hooks_spec.rb +57 -0
- data/spec/lib/appsignal/marker_spec.rb +1 -1
- data/spec/spec_helper.rb +5 -0
- data/spec/support/helpers/config_helpers.rb +3 -2
- data/spec/support/helpers/dependency_helper.rb +4 -0
- data/spec/support/helpers/transaction_helpers.rb +1 -1
- data/spec/support/testing.rb +19 -19
- metadata +19 -7
data/README.md
CHANGED
@@ -9,7 +9,7 @@ issues.
|
|
9
9
|
- [Ruby code documentation][ruby-doc]
|
10
10
|
- [Support][contact]
|
11
11
|
|
12
|
-
[](https://appsignal.semaphoreci.com/projects/appsignal-ruby)
|
13
13
|
[](http://badge.fury.io/rb/appsignal)
|
14
14
|
[](https://codeclimate.com/github/appsignal/appsignal)
|
15
15
|
|
@@ -183,7 +183,7 @@ installing the AppSignal C-extension.
|
|
183
183
|
# Gemfile
|
184
184
|
gem "appsignal",
|
185
185
|
:git => "https://github.com/appsignal/appsignal-ruby.git",
|
186
|
-
:branch => "
|
186
|
+
:branch => "main"
|
187
187
|
```
|
188
188
|
|
189
189
|
When you need to use a git source of the gem in your JRuby install, you'll need
|
@@ -219,12 +219,18 @@ BUNDLE_GEMFILE=gemfiles/capistrano3.gemfile bundle exec rspec
|
|
219
219
|
BUNDLE_GEMFILE=gemfiles/grape.gemfile bundle exec rspec
|
220
220
|
BUNDLE_GEMFILE=gemfiles/no_dependencies.gemfile bundle exec rspec
|
221
221
|
BUNDLE_GEMFILE=gemfiles/padrino.gemfile bundle exec rspec
|
222
|
+
BUNDLE_GEMFILE=gemfiles/que.gemfile bundle exec rspec
|
223
|
+
BUNDLE_GEMFILE=gemfiles/que_beta.gemfile bundle exec rspec
|
222
224
|
BUNDLE_GEMFILE=gemfiles/rails-3.2.gemfile bundle exec rspec
|
223
225
|
BUNDLE_GEMFILE=gemfiles/rails-4.0.gemfile bundle exec rspec
|
224
226
|
BUNDLE_GEMFILE=gemfiles/rails-4.1.gemfile bundle exec rspec
|
225
227
|
BUNDLE_GEMFILE=gemfiles/rails-4.2.gemfile bundle exec rspec
|
226
228
|
BUNDLE_GEMFILE=gemfiles/rails-5.0.gemfile bundle exec rspec
|
227
|
-
BUNDLE_GEMFILE=gemfiles/
|
229
|
+
BUNDLE_GEMFILE=gemfiles/rails-5.1.gemfile bundle exec rspec
|
230
|
+
BUNDLE_GEMFILE=gemfiles/rails-5.2.gemfile bundle exec rspec
|
231
|
+
BUNDLE_GEMFILE=gemfiles/rails-6.0.gemfile bundle exec rspec
|
232
|
+
BUNDLE_GEMFILE=gemfiles/resque-1.gemfile bundle exec rspec
|
233
|
+
BUNDLE_GEMFILE=gemfiles/resque-2.gemfile bundle exec rspec
|
228
234
|
BUNDLE_GEMFILE=gemfiles/sequel-435.gemfile bundle exec rspec
|
229
235
|
BUNDLE_GEMFILE=gemfiles/sequel.gemfile bundle exec rspec
|
230
236
|
BUNDLE_GEMFILE=gemfiles/sinatra.gemfile bundle exec rspec
|
@@ -242,12 +248,12 @@ a number of different Ruby versions.
|
|
242
248
|
|
243
249
|
This gem uses [Semantic Versioning][semver].
|
244
250
|
|
245
|
-
The `
|
251
|
+
The `main` branch corresponds to the current stable release of the gem.
|
246
252
|
|
247
253
|
The `develop` branch is used for development of features that will end up in
|
248
254
|
the next minor release.
|
249
255
|
|
250
|
-
Open a Pull Request on the `
|
256
|
+
Open a Pull Request on the `main` branch if you're fixing a bug. For new new
|
251
257
|
features, open a Pull Request on the `develop` branch.
|
252
258
|
|
253
259
|
Every stable and unstable release is tagged in git with a version tag.
|
data/Rakefile
CHANGED
@@ -39,6 +39,10 @@ def build_task(ruby_version, type = nil)
|
|
39
39
|
}
|
40
40
|
end
|
41
41
|
|
42
|
+
def gems_with_gemfiles
|
43
|
+
YAML.load_file("build_matrix.yml")["matrix"]["gems"].map { |g| g["gem"] }.freeze
|
44
|
+
end
|
45
|
+
|
42
46
|
namespace :build_matrix do
|
43
47
|
namespace :semaphore do
|
44
48
|
task :generate do
|
@@ -70,7 +74,10 @@ namespace :build_matrix do
|
|
70
74
|
job = {
|
71
75
|
"name" => "Ruby #{ruby_version} for #{gem["gem"]}",
|
72
76
|
"env_vars" => env,
|
73
|
-
"commands" => [
|
77
|
+
"commands" => [
|
78
|
+
"./support/bundler_wrapper exec rake test",
|
79
|
+
"./support/bundler_wrapper exec rake test:failure"
|
80
|
+
]
|
74
81
|
}
|
75
82
|
if gem["gem"] == "no_dependencies"
|
76
83
|
ruby_primary_block["task"]["jobs"] << job
|
@@ -307,17 +314,19 @@ task :publish => [
|
|
307
314
|
desc "Install the AppSignal gem, extension and all possible dependencies."
|
308
315
|
task :install => "extension:install" do
|
309
316
|
Bundler.with_clean_env do
|
310
|
-
|
317
|
+
gems_with_gemfiles.each do |gemfile|
|
311
318
|
system "bundle --gemfile gemfiles/#{gemfile}.gemfile"
|
312
319
|
end
|
313
320
|
end
|
314
321
|
end
|
315
322
|
|
316
323
|
task :spec_all_gemfiles do
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
324
|
+
Bundler.with_clean_env do
|
325
|
+
gems_with_gemfiles.each do |gemfile|
|
326
|
+
puts "Running tests for #{gemfile}"
|
327
|
+
unless system("env BUNDLE_GEMFILE=gemfiles/#{gemfile}.gemfile bundle exec rspec")
|
328
|
+
raise "Not successful"
|
329
|
+
end
|
321
330
|
end
|
322
331
|
end
|
323
332
|
end
|
@@ -364,11 +373,20 @@ end
|
|
364
373
|
|
365
374
|
begin
|
366
375
|
require "rspec/core/rake_task"
|
376
|
+
is_jruby = defined?(RUBY_ENGINE) && RUBY_ENGINE == "jruby"
|
377
|
+
unless is_jruby
|
378
|
+
jruby_opts = "--exclude-pattern=spec/lib/appsignal/extension/jruby_spec.rb"
|
379
|
+
end
|
380
|
+
|
367
381
|
desc "Run the AppSignal gem test suite."
|
368
382
|
RSpec::Core::RakeTask.new :test do |t|
|
369
|
-
|
370
|
-
|
371
|
-
|
383
|
+
t.rspec_opts = jruby_opts
|
384
|
+
end
|
385
|
+
|
386
|
+
namespace :test do
|
387
|
+
desc "Run the Appsignal gem test in an extension failure scenario"
|
388
|
+
RSpec::Core::RakeTask.new :failure do |t|
|
389
|
+
t.rspec_opts = "#{jruby_opts} --tag extension_installation_failure"
|
372
390
|
end
|
373
391
|
end
|
374
392
|
rescue LoadError # rubocop:disable Lint/HandleExceptions
|
data/appsignal.gemspec
CHANGED
@@ -29,7 +29,7 @@ Gem::Specification.new do |gem| # rubocop:disable Metrics/BlockLength
|
|
29
29
|
gem.metadata = {
|
30
30
|
"bug_tracker_uri" => "https://github.com/appsignal/appsignal-ruby/issues",
|
31
31
|
"changelog_uri" =>
|
32
|
-
"https://github.com/appsignal/appsignal-ruby/blob/
|
32
|
+
"https://github.com/appsignal/appsignal-ruby/blob/main/CHANGELOG.md",
|
33
33
|
"documentation_uri" => "https://docs.appsignal.com/ruby/",
|
34
34
|
"homepage_uri" => "https://docs.appsignal.com/ruby/",
|
35
35
|
"source_code_uri" => "https://github.com/appsignal/appsignal-ruby"
|
data/build_matrix.yml
CHANGED
@@ -10,8 +10,8 @@ semaphore: # Default `.semaphore/semaphore.yml` contents
|
|
10
10
|
# Cancel all running and queued workflows before this one
|
11
11
|
auto_cancel:
|
12
12
|
running:
|
13
|
-
# Ignore
|
14
|
-
when: "branch != '
|
13
|
+
# Ignore main AND develop branch as we want it to build all workflows
|
14
|
+
when: "branch != 'main' AND branch != 'develop'"
|
15
15
|
|
16
16
|
global_job_config:
|
17
17
|
env_vars:
|
data/ext/Rakefile
CHANGED
data/ext/agent.yml
CHANGED
@@ -1,70 +1,62 @@
|
|
1
1
|
---
|
2
|
-
version:
|
2
|
+
version: 361340a
|
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: 4e08cb0cef0ea7e30f8d507380b923f6cfa14adaea12c81804e118acd6395b57
|
10
10
|
filename: appsignal-x86_64-darwin-all-static.tar.gz
|
11
11
|
dynamic:
|
12
|
-
checksum:
|
12
|
+
checksum: 1a9c3e26bd453fe60a2f511d536e64bdeddb1f939664bda90d6a41eaeedf5250
|
13
13
|
filename: appsignal-x86_64-darwin-all-dynamic.tar.gz
|
14
14
|
universal-darwin:
|
15
15
|
static:
|
16
|
-
checksum:
|
16
|
+
checksum: 4e08cb0cef0ea7e30f8d507380b923f6cfa14adaea12c81804e118acd6395b57
|
17
17
|
filename: appsignal-x86_64-darwin-all-static.tar.gz
|
18
18
|
dynamic:
|
19
|
-
checksum:
|
19
|
+
checksum: 1a9c3e26bd453fe60a2f511d536e64bdeddb1f939664bda90d6a41eaeedf5250
|
20
20
|
filename: appsignal-x86_64-darwin-all-dynamic.tar.gz
|
21
21
|
i686-linux:
|
22
22
|
static:
|
23
|
-
checksum:
|
23
|
+
checksum: 01c027b3e472cb39d844284fcc8ba532628c00731b912e0e9718646ed124ae6e
|
24
24
|
filename: appsignal-i686-linux-all-static.tar.gz
|
25
25
|
dynamic:
|
26
|
-
checksum:
|
26
|
+
checksum: 30696eac3ae5646bcb21ff86a1824dd4511a41dd323514e4a97a41b5ff09e2f8
|
27
27
|
filename: appsignal-i686-linux-all-dynamic.tar.gz
|
28
28
|
x86-linux:
|
29
29
|
static:
|
30
|
-
checksum:
|
30
|
+
checksum: 01c027b3e472cb39d844284fcc8ba532628c00731b912e0e9718646ed124ae6e
|
31
31
|
filename: appsignal-i686-linux-all-static.tar.gz
|
32
32
|
dynamic:
|
33
|
-
checksum:
|
33
|
+
checksum: 30696eac3ae5646bcb21ff86a1824dd4511a41dd323514e4a97a41b5ff09e2f8
|
34
34
|
filename: appsignal-i686-linux-all-dynamic.tar.gz
|
35
|
-
i686-linux-musl:
|
36
|
-
static:
|
37
|
-
checksum: 18a5648c469718676e0c4b2925fbdd04a6d9b916ff778571a48d4ff0ffa944b6
|
38
|
-
filename: appsignal-i686-linux-musl-all-static.tar.gz
|
39
|
-
x86-linux-musl:
|
40
|
-
static:
|
41
|
-
checksum: 18a5648c469718676e0c4b2925fbdd04a6d9b916ff778571a48d4ff0ffa944b6
|
42
|
-
filename: appsignal-i686-linux-musl-all-static.tar.gz
|
43
35
|
x86_64-linux:
|
44
36
|
static:
|
45
|
-
checksum:
|
37
|
+
checksum: fe2038d6fa468fc23900fea6d8179d2b37d41d54f4ff33c573116183ac1cb491
|
46
38
|
filename: appsignal-x86_64-linux-all-static.tar.gz
|
47
39
|
dynamic:
|
48
|
-
checksum:
|
40
|
+
checksum: bcbf9546b078fb8bbaae5e7df4ed84831346c814bc865a47d32a3a095a84acbb
|
49
41
|
filename: appsignal-x86_64-linux-all-dynamic.tar.gz
|
50
42
|
x86_64-linux-musl:
|
51
43
|
static:
|
52
|
-
checksum:
|
44
|
+
checksum: b2ee5579a62b76a1d2f41f4e06749c4c549f9aaa40764862eff49c5a6a8841f1
|
53
45
|
filename: appsignal-x86_64-linux-musl-all-static.tar.gz
|
54
46
|
dynamic:
|
55
|
-
checksum:
|
47
|
+
checksum: 53cd2464853e61c2d8f911ec32ff98cb48f824293ffd575da6743bc34625a7eb
|
56
48
|
filename: appsignal-x86_64-linux-musl-all-dynamic.tar.gz
|
57
49
|
x86_64-freebsd:
|
58
50
|
static:
|
59
|
-
checksum:
|
51
|
+
checksum: f228dd2f2cf951c9eb9f04487be50fdfdc3d29a956e639787a4022bd73f02e53
|
60
52
|
filename: appsignal-x86_64-freebsd-all-static.tar.gz
|
61
53
|
dynamic:
|
62
|
-
checksum:
|
54
|
+
checksum: 030b322b2cb15607260cbb0424c03f6e41646dca7aacc43a30279ad63a336541
|
63
55
|
filename: appsignal-x86_64-freebsd-all-dynamic.tar.gz
|
64
56
|
amd64-freebsd:
|
65
57
|
static:
|
66
|
-
checksum:
|
58
|
+
checksum: f228dd2f2cf951c9eb9f04487be50fdfdc3d29a956e639787a4022bd73f02e53
|
67
59
|
filename: appsignal-x86_64-freebsd-all-static.tar.gz
|
68
60
|
dynamic:
|
69
|
-
checksum:
|
61
|
+
checksum: 030b322b2cb15607260cbb0424c03f6e41646dca7aacc43a30279ad63a336541
|
70
62
|
filename: appsignal-x86_64-freebsd-all-dynamic.tar.gz
|
data/ext/appsignal_extension.c
CHANGED
@@ -485,7 +485,7 @@ static VALUE data_append_boolean(VALUE self, VALUE value) {
|
|
485
485
|
return Qnil;
|
486
486
|
}
|
487
487
|
|
488
|
-
static VALUE data_append_nil(VALUE self
|
488
|
+
static VALUE data_append_nil(VALUE self) {
|
489
489
|
appsignal_data_t* data;
|
490
490
|
|
491
491
|
Data_Get_Struct(self, appsignal_data_t, data);
|
data/ext/base.rb
CHANGED
@@ -183,3 +183,10 @@ end
|
|
183
183
|
def http_proxy
|
184
184
|
Gem.configuration[:http_proxy] || ENV["http_proxy"] || ENV["HTTP_PROXY"]
|
185
185
|
end
|
186
|
+
|
187
|
+
# Fail the installation on purpose in a specific test environment.
|
188
|
+
def fail_install_on_purpose_in_test!
|
189
|
+
return unless ENV["_TEST_APPSIGNAL_EXTENSION_FAILURE"]
|
190
|
+
|
191
|
+
raise "AppSignal internal test failure"
|
192
|
+
end
|
data/ext/extconf.rb
CHANGED
data/lib/appsignal.rb
CHANGED
@@ -339,6 +339,7 @@ require "appsignal/auth_check"
|
|
339
339
|
require "appsignal/config"
|
340
340
|
require "appsignal/event_formatter"
|
341
341
|
require "appsignal/hooks"
|
342
|
+
require "appsignal/probes"
|
342
343
|
require "appsignal/marker"
|
343
344
|
require "appsignal/minutely"
|
344
345
|
require "appsignal/garbage_collection_profiler"
|
data/lib/appsignal/auth_check.rb
CHANGED
@@ -25,8 +25,10 @@ module Appsignal
|
|
25
25
|
def initialize(config, logger = nil)
|
26
26
|
@config = config
|
27
27
|
if logger # rubocop:disable Style/GuardClause
|
28
|
-
|
29
|
-
"
|
28
|
+
Appsignal::Utils::DeprecationMessage.message \
|
29
|
+
"`Appsignal::AuthCheck.new`'s `logger` argument will be removed " \
|
30
|
+
"in the next major version. Please configure the logger " \
|
31
|
+
"using `Appsignal.logger`."
|
30
32
|
end
|
31
33
|
end
|
32
34
|
|
@@ -371,7 +371,7 @@ module Appsignal
|
|
371
371
|
end
|
372
372
|
|
373
373
|
def print_installation_result_report(report)
|
374
|
-
report = report.fetch("
|
374
|
+
report = report.fetch("result", {})
|
375
375
|
puts " Installation result"
|
376
376
|
puts " Status: #{report["status"]}"
|
377
377
|
puts " Message: #{report["message"]}" if report["message"]
|
data/lib/appsignal/config.rb
CHANGED
@@ -81,6 +81,50 @@ module Appsignal
|
|
81
81
|
"APPSIGNAL_TRANSACTION_DEBUG_MODE" => :transaction_debug_mode,
|
82
82
|
"APP_REVISION" => :revision
|
83
83
|
}.freeze
|
84
|
+
# @api private
|
85
|
+
ENV_STRING_KEYS = %w[
|
86
|
+
APPSIGNAL_APP_NAME
|
87
|
+
APPSIGNAL_CA_FILE_PATH
|
88
|
+
APPSIGNAL_DNS_SERVERS
|
89
|
+
APPSIGNAL_FRONTEND_ERROR_CATCHING_PATH
|
90
|
+
APPSIGNAL_HOSTNAME
|
91
|
+
APPSIGNAL_HTTP_PROXY
|
92
|
+
APPSIGNAL_LOG
|
93
|
+
APPSIGNAL_LOG_PATH
|
94
|
+
APPSIGNAL_PUSH_API_ENDPOINT
|
95
|
+
APPSIGNAL_PUSH_API_KEY
|
96
|
+
APPSIGNAL_WORKING_DIRECTORY_PATH
|
97
|
+
APPSIGNAL_WORKING_DIR_PATH
|
98
|
+
APP_REVISION
|
99
|
+
].freeze
|
100
|
+
# @api private
|
101
|
+
ENV_BOOLEAN_KEYS = %w[
|
102
|
+
APPSIGNAL_ACTIVE
|
103
|
+
APPSIGNAL_DEBUG
|
104
|
+
APPSIGNAL_ENABLE_ALLOCATION_TRACKING
|
105
|
+
APPSIGNAL_ENABLE_FRONTEND_ERROR_CATCHING
|
106
|
+
APPSIGNAL_ENABLE_GC_INSTRUMENTATION
|
107
|
+
APPSIGNAL_ENABLE_HOST_METRICS
|
108
|
+
APPSIGNAL_ENABLE_MINUTELY_PROBES
|
109
|
+
APPSIGNAL_FILES_WORLD_ACCESSIBLE
|
110
|
+
APPSIGNAL_INSTRUMENT_NET_HTTP
|
111
|
+
APPSIGNAL_INSTRUMENT_REDIS
|
112
|
+
APPSIGNAL_INSTRUMENT_SEQUEL
|
113
|
+
APPSIGNAL_RUNNING_IN_CONTAINER
|
114
|
+
APPSIGNAL_SEND_ENVIRONMENT_METADATA
|
115
|
+
APPSIGNAL_SEND_PARAMS
|
116
|
+
APPSIGNAL_SKIP_SESSION_DATA
|
117
|
+
APPSIGNAL_TRANSACTION_DEBUG_MODE
|
118
|
+
].freeze
|
119
|
+
# @api private
|
120
|
+
ENV_ARRAY_KEYS = %w[
|
121
|
+
APPSIGNAL_FILTER_PARAMETERS
|
122
|
+
APPSIGNAL_FILTER_SESSION_DATA
|
123
|
+
APPSIGNAL_IGNORE_ACTIONS
|
124
|
+
APPSIGNAL_IGNORE_ERRORS
|
125
|
+
APPSIGNAL_IGNORE_NAMESPACES
|
126
|
+
APPSIGNAL_REQUEST_HEADERS
|
127
|
+
].freeze
|
84
128
|
|
85
129
|
# Mapping of old and deprecated AppSignal configuration keys
|
86
130
|
DEPRECATED_CONFIG_KEY_MAPPING = {
|
@@ -121,8 +165,41 @@ module Appsignal
|
|
121
165
|
:initial_config, :file_config, :env_config
|
122
166
|
attr_accessor :logger
|
123
167
|
|
124
|
-
|
168
|
+
# Initialize a new configuration object for AppSignal.
|
169
|
+
#
|
170
|
+
# If this is manually initialized, and not by {Appsignal.start}, it needs
|
171
|
+
# to be assigned to the {Appsignal.config} attribute.
|
172
|
+
#
|
173
|
+
# @example
|
174
|
+
# require "appsignal"
|
175
|
+
# Appsignal.config = Appsignal::Config.new(
|
176
|
+
# app_path,
|
177
|
+
# "production"
|
178
|
+
# )
|
179
|
+
# Appsignal.start
|
180
|
+
#
|
181
|
+
# @param root_path [String] Root path of the app.
|
182
|
+
# @param env [String] The environment to load when AppSignal is started. It
|
183
|
+
# will look for an environment with this name in the `config/appsignal.yml`
|
184
|
+
# config file.
|
185
|
+
# @param initial_config [Hash<String, Object>] The initial configuration to
|
186
|
+
# use. This will be overwritten by the file config and environment
|
187
|
+
# variables config.
|
188
|
+
# @param logger [Logger] The logger to use for the AppSignal gem. This is
|
189
|
+
# used by the configuration class only. Default: {Appsignal.logger}. See
|
190
|
+
# also {Appsignal.start_logger}.
|
191
|
+
# @param config_file [String] Custom config file location. Default
|
192
|
+
# `config/appsignal.yml`.
|
193
|
+
#
|
194
|
+
# @see https://docs.appsignal.com/ruby/configuration/
|
195
|
+
# Configuration documentation
|
196
|
+
# @see https://docs.appsignal.com/ruby/configuration/load-order.html
|
197
|
+
# Configuration load order
|
198
|
+
# @see https://docs.appsignal.com/ruby/instrumentation/integrating-appsignal.html
|
199
|
+
# How to integrate AppSignal manually
|
200
|
+
def initialize(root_path, env, initial_config = {}, logger = Appsignal.logger, config_file = nil)
|
125
201
|
@root_path = root_path
|
202
|
+
@config_file = config_file
|
126
203
|
@logger = logger
|
127
204
|
@valid = false
|
128
205
|
@config_hash = Hash[DEFAULT_CONFIG]
|
@@ -288,7 +365,7 @@ module Appsignal
|
|
288
365
|
" Skipping file config.\n" \
|
289
366
|
"File: #{config_file.inspect}\n" \
|
290
367
|
"#{e.class.name}: #{e}"
|
291
|
-
|
368
|
+
Kernel.warn "appsignal: #{message}"
|
292
369
|
logger.error "#{message}\n#{e.backtrace.join("\n")}"
|
293
370
|
nil
|
294
371
|
end
|
@@ -325,33 +402,21 @@ module Appsignal
|
|
325
402
|
config = {}
|
326
403
|
|
327
404
|
# Configuration with string type
|
328
|
-
|
329
|
-
APPSIGNAL_FRONTEND_ERROR_CATCHING_PATH APPSIGNAL_HTTP_PROXY
|
330
|
-
APPSIGNAL_LOG APPSIGNAL_LOG_PATH APPSIGNAL_WORKING_DIR_PATH
|
331
|
-
APPSIGNAL_HOSTNAME APPSIGNAL_CA_FILE_PATH APP_REVISION].each do |var|
|
405
|
+
ENV_STRING_KEYS.each do |var|
|
332
406
|
env_var = ENV[var]
|
333
407
|
next unless env_var
|
334
408
|
config[ENV_TO_KEY_MAPPING[var]] = env_var
|
335
409
|
end
|
336
410
|
|
337
411
|
# Configuration with boolean type
|
338
|
-
|
339
|
-
APPSIGNAL_INSTRUMENT_REDIS APPSIGNAL_INSTRUMENT_SEQUEL
|
340
|
-
APPSIGNAL_SKIP_SESSION_DATA APPSIGNAL_ENABLE_FRONTEND_ERROR_CATCHING
|
341
|
-
APPSIGNAL_ENABLE_ALLOCATION_TRACKING APPSIGNAL_ENABLE_GC_INSTRUMENTATION
|
342
|
-
APPSIGNAL_RUNNING_IN_CONTAINER APPSIGNAL_ENABLE_HOST_METRICS
|
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|
|
412
|
+
ENV_BOOLEAN_KEYS.each do |var|
|
346
413
|
env_var = ENV[var]
|
347
414
|
next unless env_var
|
348
415
|
config[ENV_TO_KEY_MAPPING[var]] = env_var.casecmp("true").zero?
|
349
416
|
end
|
350
417
|
|
351
418
|
# Configuration with array of strings type
|
352
|
-
|
353
|
-
APPSIGNAL_IGNORE_NAMESPACES APPSIGNAL_FILTER_PARAMETERS
|
354
|
-
APPSIGNAL_FILTER_SESSION_DATA APPSIGNAL_REQUEST_HEADERS].each do |var|
|
419
|
+
ENV_ARRAY_KEYS.each do |var|
|
355
420
|
env_var = ENV[var]
|
356
421
|
next unless env_var
|
357
422
|
config[ENV_TO_KEY_MAPPING[var]] = env_var.split(",")
|
data/lib/appsignal/extension.rb
CHANGED
@@ -10,11 +10,12 @@ begin
|
|
10
10
|
require "appsignal_extension"
|
11
11
|
Appsignal.extension_loaded = true
|
12
12
|
end
|
13
|
-
rescue LoadError =>
|
14
|
-
|
15
|
-
"
|
16
|
-
|
17
|
-
)
|
13
|
+
rescue LoadError => error
|
14
|
+
error_message = "ERROR: AppSignal failed to load extension. " \
|
15
|
+
"Please run `appsignal diagnose` and email us at support@appsignal.com\n" \
|
16
|
+
"#{error.class}: #{error.message}"
|
17
|
+
Appsignal.logger.error(error_message)
|
18
|
+
Kernel.warn error_message
|
18
19
|
Appsignal.extension_loaded = false
|
19
20
|
end
|
20
21
|
|