appsignal 3.13.0 → 4.0.0.beta.2

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 (119) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +499 -487
  3. data/CHANGELOG.md +121 -0
  4. data/Rakefile +31 -7
  5. data/benchmark.rake +4 -6
  6. data/build_matrix.yml +45 -39
  7. data/ext/agent.rb +27 -27
  8. data/ext/appsignal_extension.c +25 -0
  9. data/gemfiles/rails-7.2.gemfile +11 -0
  10. data/lib/appsignal/check_in/cron.rb +2 -15
  11. data/lib/appsignal/cli/diagnose.rb +37 -28
  12. data/lib/appsignal/cli/install.rb +5 -1
  13. data/lib/appsignal/config.rb +57 -119
  14. data/lib/appsignal/demo.rb +2 -2
  15. data/lib/appsignal/extension/jruby.rb +14 -0
  16. data/lib/appsignal/helpers/instrumentation.rb +152 -416
  17. data/lib/appsignal/helpers/metrics.rb +0 -16
  18. data/lib/appsignal/hooks/action_cable.rb +8 -8
  19. data/lib/appsignal/hooks/active_job.rb +2 -2
  20. data/lib/appsignal/hooks/at_exit.rb +37 -0
  21. data/lib/appsignal/hooks.rb +1 -16
  22. data/lib/appsignal/integrations/action_cable.rb +2 -2
  23. data/lib/appsignal/integrations/capistrano/appsignal.cap +2 -4
  24. data/lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb +1 -4
  25. data/lib/appsignal/integrations/delayed_job_plugin.rb +3 -3
  26. data/lib/appsignal/integrations/que.rb +2 -2
  27. data/lib/appsignal/integrations/railtie.rb +26 -59
  28. data/lib/appsignal/integrations/rake.rb +2 -2
  29. data/lib/appsignal/integrations/resque.rb +2 -2
  30. data/lib/appsignal/integrations/shoryuken.rb +4 -4
  31. data/lib/appsignal/integrations/sidekiq.rb +3 -3
  32. data/lib/appsignal/integrations/webmachine.rb +2 -2
  33. data/lib/appsignal/loaders.rb +1 -1
  34. data/lib/appsignal/probes.rb +0 -9
  35. data/lib/appsignal/rack/abstract_middleware.rb +4 -26
  36. data/lib/appsignal/rack/event_handler.rb +4 -4
  37. data/lib/appsignal/rack/rails_instrumentation.rb +1 -1
  38. data/lib/appsignal/rack.rb +0 -25
  39. data/lib/appsignal/sample_data.rb +108 -0
  40. data/lib/appsignal/transaction.rb +241 -359
  41. data/lib/appsignal/utils/rails_helper.rb +4 -0
  42. data/lib/appsignal/version.rb +1 -1
  43. data/lib/appsignal.rb +19 -71
  44. data/spec/lib/appsignal/auth_check_spec.rb +1 -1
  45. data/spec/lib/appsignal/capistrano2_spec.rb +1 -1
  46. data/spec/lib/appsignal/capistrano3_spec.rb +53 -13
  47. data/spec/lib/appsignal/check_in_spec.rb +1 -207
  48. data/spec/lib/appsignal/cli/demo_spec.rb +7 -27
  49. data/spec/lib/appsignal/cli/diagnose_spec.rb +145 -110
  50. data/spec/lib/appsignal/config_spec.rb +304 -379
  51. data/spec/lib/appsignal/extension_install_failure_spec.rb +5 -1
  52. data/spec/lib/appsignal/extension_spec.rb +5 -1
  53. data/spec/lib/appsignal/hooks/active_support_notifications/instrument_shared_examples.rb +1 -1
  54. data/spec/lib/appsignal/hooks/active_support_notifications/start_finish_shared_examples.rb +1 -2
  55. data/spec/lib/appsignal/hooks/active_support_notifications_spec.rb +1 -0
  56. data/spec/lib/appsignal/hooks/activejob_spec.rb +7 -12
  57. data/spec/lib/appsignal/hooks/at_exit_spec.rb +72 -0
  58. data/spec/lib/appsignal/hooks/gvl_spec.rb +10 -5
  59. data/spec/lib/appsignal/hooks/http_spec.rb +3 -3
  60. data/spec/lib/appsignal/hooks/net_http_spec.rb +3 -3
  61. data/spec/lib/appsignal/hooks/rake_spec.rb +6 -9
  62. data/spec/lib/appsignal/hooks/redis_client_spec.rb +5 -10
  63. data/spec/lib/appsignal/hooks/redis_spec.rb +4 -7
  64. data/spec/lib/appsignal/hooks/resque_spec.rb +3 -5
  65. data/spec/lib/appsignal/hooks_spec.rb +0 -41
  66. data/spec/lib/appsignal/integrations/data_mapper_spec.rb +29 -20
  67. data/spec/lib/appsignal/integrations/delayed_job_plugin_spec.rb +4 -9
  68. data/spec/lib/appsignal/integrations/railtie_spec.rb +179 -157
  69. data/spec/lib/appsignal/integrations/shoryuken_spec.rb +3 -5
  70. data/spec/lib/appsignal/integrations/sidekiq_spec.rb +48 -62
  71. data/spec/lib/appsignal/loaders/hanami_spec.rb +6 -9
  72. data/spec/lib/appsignal/loaders/padrino_spec.rb +6 -10
  73. data/spec/lib/appsignal/loaders/sinatra_spec.rb +6 -9
  74. data/spec/lib/appsignal/loaders_spec.rb +8 -1
  75. data/spec/lib/appsignal/marker_spec.rb +1 -1
  76. data/spec/lib/appsignal/probes_spec.rb +4 -83
  77. data/spec/lib/appsignal/rack/abstract_middleware_spec.rb +4 -63
  78. data/spec/lib/appsignal/rack/event_handler_spec.rb +18 -15
  79. data/spec/lib/appsignal/rack/rails_instrumentation_spec.rb +3 -11
  80. data/spec/lib/appsignal/rack/sinatra_instrumentation_spec.rb +4 -5
  81. data/spec/lib/appsignal/sample_data_spec.rb +213 -0
  82. data/spec/lib/appsignal/transaction_spec.rb +817 -1046
  83. data/spec/lib/appsignal/transmitter_spec.rb +6 -8
  84. data/spec/lib/appsignal_spec.rb +311 -643
  85. data/spec/spec_helper.rb +1 -3
  86. data/spec/support/fixtures/projects/valid/config/appsignal.yml +4 -7
  87. data/spec/support/fixtures/projects/valid_with_rails_app/config/application.rb +16 -0
  88. data/spec/support/fixtures/projects/valid_with_rails_app/config/appsignal.yml +56 -0
  89. data/spec/support/fixtures/projects/valid_with_rails_app/config/environment.rb +5 -0
  90. data/spec/support/helpers/api_request_helper.rb +3 -2
  91. data/spec/support/helpers/config_helpers.rb +41 -11
  92. data/spec/support/helpers/dependency_helper.rb +8 -0
  93. data/spec/support/helpers/log_helpers.rb +1 -0
  94. data/spec/support/helpers/rails_helper.rb +6 -6
  95. data/spec/support/helpers/transaction_helpers.rb +2 -24
  96. data/spec/support/matchers/transaction.rb +3 -3
  97. data/spec/support/mocks/appsignal_mock.rb +3 -3
  98. data/spec/support/mocks/mock_probe.rb +2 -0
  99. data/spec/support/testing.rb +2 -2
  100. metadata +12 -22
  101. data/gemfiles/que_beta.gemfile +0 -5
  102. data/lib/appsignal/helpers/heartbeat.rb +0 -20
  103. data/lib/appsignal/integrations/grape.rb +0 -35
  104. data/lib/appsignal/integrations/hanami.rb +0 -13
  105. data/lib/appsignal/integrations/padrino.rb +0 -13
  106. data/lib/appsignal/integrations/sinatra.rb +0 -13
  107. data/lib/appsignal/rack/generic_instrumentation.rb +0 -22
  108. data/lib/appsignal/rack/streaming_listener.rb +0 -28
  109. data/spec/lib/appsignal/integrations/grape_spec.rb +0 -36
  110. data/spec/lib/appsignal/integrations/hanami_spec.rb +0 -17
  111. data/spec/lib/appsignal/integrations/padrino_spec.rb +0 -15
  112. data/spec/lib/appsignal/integrations/sinatra_spec.rb +0 -15
  113. data/spec/lib/appsignal/rack/generic_instrumentation_spec.rb +0 -81
  114. data/spec/lib/appsignal/rack/streaming_listener_spec.rb +0 -69
  115. data/spec/support/fixtures/projects/valid/config/environments/development.rb +0 -0
  116. data/spec/support/fixtures/projects/valid/config/environments/production.rb +0 -0
  117. data/spec/support/fixtures/projects/valid/config/environments/test.rb +0 -0
  118. data/spec/support/rails/my_app.rb +0 -6
  119. /data/spec/support/fixtures/projects/{valid/config/application.rb → valid_with_rails_app/log/.gitkeep} +0 -0
data/spec/spec_helper.rb CHANGED
@@ -25,9 +25,7 @@ Dir[File.join(APPSIGNAL_SPEC_DIR, "support/shared_examples", "*.rb")].sort.each
25
25
  require f
26
26
  end
27
27
  if DependencyHelper.rails_present?
28
- Dir[File.join(DirectoryHelper.support_dir, "rails", "*.rb")].sort.each do |f|
29
- require f
30
- end
28
+ require File.join(ConfigHelpers.rails_project_fixture_path, "config/application.rb")
31
29
  end
32
30
  if DependencyHelper.hanami2_present?
33
31
  Dir[File.join(DirectoryHelper.support_dir, "hanami", "*.rb")].sort.each do |f|
@@ -1,13 +1,6 @@
1
1
  default: &defaults
2
2
  push_api_key: "abc"
3
3
  name: "TestApp"
4
- request_headers: [
5
- "HTTP_ACCEPT", "HTTP_ACCEPT_CHARSET", "HTTP_ACCEPT_ENCODING",
6
- "HTTP_ACCEPT_LANGUAGE", "HTTP_CACHE_CONTROL", "HTTP_CONNECTION",
7
- "CONTENT_LENGTH", "PATH_INFO", "HTTP_RANGE", "HTTP_REFERER",
8
- "REQUEST_METHOD", "REQUEST_PATH", "SERVER_NAME", "SERVER_PORT",
9
- "SERVER_PROTOCOL", "HTTP_USER_AGENT"
10
- ]
11
4
  enable_minutely_probes: false
12
5
 
13
6
  production:
@@ -58,3 +51,7 @@ rack_env:
58
51
 
59
52
  rails_env:
60
53
  <<: *defaults
54
+
55
+ inactive_env:
56
+ <<: *defaults
57
+ active: false
@@ -0,0 +1,16 @@
1
+ require "rails"
2
+
3
+ module MyApp
4
+ class Application < Rails::Application
5
+ config.active_support.deprecation = proc { |message, stack| }
6
+ config.eager_load = false
7
+
8
+ def self.initialize!
9
+ # Prevent errors about Rails being initialized more than once
10
+ return if defined?(@initialized)
11
+
12
+ super
13
+ @initialized = true
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,56 @@
1
+ default: &defaults
2
+ push_api_key: "abc"
3
+ name: "TestApp"
4
+ enable_minutely_probes: false
5
+
6
+ production:
7
+ <<: *defaults
8
+ active: true
9
+
10
+ development:
11
+ <<: *defaults
12
+ active: true
13
+
14
+ test:
15
+ <<: *defaults
16
+ log_level: debug
17
+ active: true
18
+
19
+ old_config:
20
+ api_key: "def"
21
+ active: true
22
+ ignore_exceptions:
23
+ - StandardError
24
+ request_headers: [
25
+ "HTTP_ACCEPT", "HTTP_ACCEPT_CHARSET", "HTTP_ACCEPT_ENCODING",
26
+ "HTTP_ACCEPT_LANGUAGE", "HTTP_CACHE_CONTROL", "HTTP_CONNECTION",
27
+ "CONTENT_LENGTH", "PATH_INFO", "HTTP_RANGE", "HTTP_REFERER",
28
+ "REQUEST_METHOD", "REQUEST_PATH", "SERVER_NAME", "SERVER_PORT",
29
+ "SERVER_PROTOCOL", "HTTP_USER_AGENT"
30
+ ]
31
+
32
+ old_config_mixed_with_new_config:
33
+ push_api_key: "ghi"
34
+ api_key: "def"
35
+ active: true
36
+ ignore_errors:
37
+ - NoMethodError
38
+ ignore_exceptions:
39
+ - StandardError
40
+ request_headers: [
41
+ "HTTP_ACCEPT", "HTTP_ACCEPT_CHARSET", "HTTP_ACCEPT_ENCODING",
42
+ "HTTP_ACCEPT_LANGUAGE", "HTTP_CACHE_CONTROL", "HTTP_CONNECTION",
43
+ "CONTENT_LENGTH", "PATH_INFO", "HTTP_RANGE", "HTTP_REFERER",
44
+ "REQUEST_METHOD", "REQUEST_PATH", "SERVER_NAME", "SERVER_PORT",
45
+ "SERVER_PROTOCOL", "HTTP_USER_AGENT"
46
+ ]
47
+
48
+ rack_env:
49
+ <<: *defaults
50
+
51
+ rails_env:
52
+ <<: *defaults
53
+
54
+ inactive_env:
55
+ <<: *defaults
56
+ active: false
@@ -0,0 +1,5 @@
1
+ # Load the Rails application.
2
+ require_relative "application"
3
+
4
+ # Initialize the Rails application.
5
+ MyApp::Application.initialize!
@@ -4,7 +4,7 @@ module ApiRequestHelper
4
4
  :query => {
5
5
  :api_key => config[:push_api_key],
6
6
  :name => config[:name],
7
- :environment => config.env,
7
+ :environment => config.respond_to?(:env) ? config.env : config[:environment],
8
8
  :hostname => config[:hostname],
9
9
  :gem_version => Appsignal::VERSION
10
10
  },
@@ -14,6 +14,7 @@ module ApiRequestHelper
14
14
  }
15
15
  body = Appsignal::Utils::JSON.generate(body) if body.is_a? Hash
16
16
  options[:body] = body if body
17
- stub_request(:post, "#{config[:endpoint]}/1/#{path}").with(options)
17
+ endpoint = config[:endpoint] || Appsignal::Config::DEFAULT_CONFIG[:endpoint]
18
+ stub_request(:post, "#{endpoint}/1/#{path}").with(options)
18
19
  end
19
20
  end
@@ -6,24 +6,54 @@ module ConfigHelpers
6
6
  end
7
7
  module_function :project_fixture_path
8
8
 
9
- def project_fixture_config( # rubocop:disable Metrics/ParameterLists
9
+ def rails_project_fixture_path
10
+ File.expand_path(
11
+ File.join(File.dirname(__FILE__), "../fixtures/projects/valid_with_rails_app")
12
+ )
13
+ end
14
+ module_function :rails_project_fixture_path
15
+
16
+ def project_fixture_config(
10
17
  env = "production",
11
- initial_config = {},
12
- logger = Appsignal.internal_logger,
13
- config_file = nil
18
+ options = {},
19
+ logger = Appsignal.internal_logger
14
20
  )
15
21
  Appsignal::Config.new(
16
22
  project_fixture_path,
17
23
  env,
18
- initial_config,
19
- logger,
20
- config_file
21
- )
24
+ logger
25
+ ).tap do |c|
26
+ c.merge_dsl_options(options)
27
+ c.validate
28
+ end
29
+ end
30
+ module_function :project_fixture_config
31
+
32
+ def build_config(
33
+ root_path: project_fixture_path,
34
+ env: "production",
35
+ options: {},
36
+ logger: Appsignal.internal_logger
37
+ )
38
+ Appsignal::Config.new(
39
+ root_path,
40
+ env,
41
+ logger
42
+ ).tap do |c|
43
+ c.merge_dsl_options(options) if options.any?
44
+ c.validate
45
+ end
22
46
  end
23
- module_function :project_fixture_config, :project_fixture_path
47
+ module_function :build_config
24
48
 
25
- def start_agent(env = "production")
26
- Appsignal._config = project_fixture_config(env)
49
+ def start_agent(env: "production", options: {})
50
+ env = "production" if env == :default
51
+ env ||= "production"
52
+ Appsignal.configure(env, :root_path => project_fixture_path) do |config|
53
+ options.each do |option, value|
54
+ config.send("#{option}=", value)
55
+ end
56
+ end
27
57
  Appsignal.start
28
58
  end
29
59
 
@@ -1,6 +1,10 @@
1
1
  module DependencyHelper
2
2
  module_function
3
3
 
4
+ def macos?
5
+ RbConfig::CONFIG["host_os"].include?("darwin")
6
+ end
7
+
4
8
  def ruby_version
5
9
  Gem::Version.new(RUBY_VERSION)
6
10
  end
@@ -37,6 +41,10 @@ module DependencyHelper
37
41
  rails_present? && rails_version >= Gem::Version.new("7.0.0")
38
42
  end
39
43
 
44
+ def rails7_1_present?
45
+ rails_present? && rails_version >= Gem::Version.new("7.1.0")
46
+ end
47
+
40
48
  def active_job_wraps_args?
41
49
  rails7_present? || (ruby_3_1_or_newer? && rails6_1_present? && !rails6_1_5_present?)
42
50
  end
@@ -8,6 +8,7 @@ module LogHelpers
8
8
  def use_logger_with(log)
9
9
  Appsignal.internal_logger = test_logger(log)
10
10
  yield
11
+ ensure
11
12
  Appsignal.internal_logger = nil
12
13
  end
13
14
 
@@ -1,10 +1,10 @@
1
1
  module RailsHelper
2
- def with_railtie(app)
3
- clear_rails_error_reporter! if Rails.respond_to? :error
4
- Appsignal::Integrations::Railtie.initialize_appsignal(app)
5
- yield
6
- ensure
7
- clear_rails_error_reporter!
2
+ def run_appsignal_railtie
3
+ app = MyApp::Application.new
4
+ Appsignal::Integrations::Railtie.initializers.each do |initializer|
5
+ initializer.run(app)
6
+ end
7
+ ActiveSupport.run_load_hooks(:after_initialize, app)
8
8
  end
9
9
 
10
10
  def with_rails_error_reporter
@@ -15,30 +15,8 @@ module TransactionHelpers
15
15
  Appsignal::Transaction.create(namespace)
16
16
  end
17
17
 
18
- def new_transaction(namespace = default_namespace)
19
- Appsignal::Transaction.new(SecureRandom.uuid, namespace)
20
- end
21
-
22
- def legacy_create_transaction(
23
- id: "mock_transaction_id",
24
- namespace: "mock_namespace",
25
- request: legacy_request,
26
- options: {}
27
- )
28
- Appsignal::Transaction.create(id, namespace, request, options)
29
- end
30
-
31
- def legacy_new_transaction(
32
- id: "mock_transaction_id",
33
- namespace: "mock_namespace",
34
- request: legacy_request,
35
- options: {}
36
- )
37
- Appsignal::Transaction.new(id, namespace, request, options)
38
- end
39
-
40
- def legacy_request(env = {})
41
- Appsignal::Transaction::InternalGenericRequest.new(env)
18
+ def new_transaction(namespace = default_namespace, ext: nil)
19
+ Appsignal::Transaction.new(SecureRandom.uuid, namespace, :ext => ext)
42
20
  end
43
21
 
44
22
  def rack_request(env)
@@ -171,9 +171,9 @@ RSpec::Matchers.define :include_breadcrumb do |action, category, message, metada
171
171
  {
172
172
  "action" => action,
173
173
  "category" => category,
174
- "message" => message,
175
- "metadata" => metadata,
176
- "time" => time
174
+ "message" => message || "",
175
+ "metadata" => metadata || {},
176
+ "time" => time || kind_of(Integer)
177
177
  }
178
178
  end
179
179
  end
@@ -7,9 +7,9 @@ class AppsignalMock
7
7
  end
8
8
 
9
9
  def config
10
- ConfigHelpers.project_fixture_config.tap do |conf|
11
- conf[:hostname] = @hostname if @hostname
12
- end
10
+ options = {}
11
+ options[:hostname] = @hostname if @hostname
12
+ ConfigHelpers.build_config(:options => options)
13
13
  end
14
14
 
15
15
  def set_gauge(*args)
@@ -2,10 +2,12 @@ class MockProbe
2
2
  attr_reader :calls
3
3
 
4
4
  def initialize
5
+ Appsignal::Testing.store[:mock_probe_call] = 0
5
6
  @calls = 0
6
7
  end
7
8
 
8
9
  def call
10
+ Appsignal::Testing.store[:mock_probe_call] += 1
9
11
  @calls += 1
10
12
  end
11
13
  end
@@ -171,7 +171,7 @@ module AppsignalTest
171
171
  # transactions are created on the {Appsignal::Testing.transactions} list.
172
172
  #
173
173
  # @see TransactionHelpers#last_transaction
174
- def new(*_args)
174
+ def new(...)
175
175
  transaction = super
176
176
  Appsignal::Testing.transactions << transaction
177
177
  transaction
@@ -180,7 +180,7 @@ module AppsignalTest
180
180
 
181
181
  module InstanceMethods
182
182
  def _sample
183
- _sample_data
183
+ sample_data
184
184
  end
185
185
  end
186
186
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appsignal
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.13.0
4
+ version: 4.0.0.beta.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Beekman
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2024-08-14 00:00:00.000000000 Z
13
+ date: 2024-08-19 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rack
@@ -171,11 +171,11 @@ files:
171
171
  - gemfiles/psych-3.gemfile
172
172
  - gemfiles/psych-4.gemfile
173
173
  - gemfiles/que.gemfile
174
- - gemfiles/que_beta.gemfile
175
174
  - gemfiles/rails-6.0.gemfile
176
175
  - gemfiles/rails-6.1.gemfile
177
176
  - gemfiles/rails-7.0.gemfile
178
177
  - gemfiles/rails-7.1.gemfile
178
+ - gemfiles/rails-7.2.gemfile
179
179
  - gemfiles/redis-4.gemfile
180
180
  - gemfiles/redis-5.gemfile
181
181
  - gemfiles/resque-2.gemfile
@@ -211,7 +211,6 @@ files:
211
211
  - lib/appsignal/extension.rb
212
212
  - lib/appsignal/extension/jruby.rb
213
213
  - lib/appsignal/garbage_collection.rb
214
- - lib/appsignal/helpers/heartbeat.rb
215
214
  - lib/appsignal/helpers/instrumentation.rb
216
215
  - lib/appsignal/helpers/metrics.rb
217
216
  - lib/appsignal/hooks.rb
@@ -219,6 +218,7 @@ files:
219
218
  - lib/appsignal/hooks/action_mailer.rb
220
219
  - lib/appsignal/hooks/active_job.rb
221
220
  - lib/appsignal/hooks/active_support_notifications.rb
221
+ - lib/appsignal/hooks/at_exit.rb
222
222
  - lib/appsignal/hooks/celluloid.rb
223
223
  - lib/appsignal/hooks/data_mapper.rb
224
224
  - lib/appsignal/hooks/delayed_job.rb
@@ -249,13 +249,10 @@ files:
249
249
  - lib/appsignal/integrations/delayed_job_plugin.rb
250
250
  - lib/appsignal/integrations/dry_monitor.rb
251
251
  - lib/appsignal/integrations/excon.rb
252
- - lib/appsignal/integrations/grape.rb
253
- - lib/appsignal/integrations/hanami.rb
254
252
  - lib/appsignal/integrations/http.rb
255
253
  - lib/appsignal/integrations/mongo_ruby_driver.rb
256
254
  - lib/appsignal/integrations/net_http.rb
257
255
  - lib/appsignal/integrations/object.rb
258
- - lib/appsignal/integrations/padrino.rb
259
256
  - lib/appsignal/integrations/que.rb
260
257
  - lib/appsignal/integrations/railtie.rb
261
258
  - lib/appsignal/integrations/rake.rb
@@ -264,7 +261,6 @@ files:
264
261
  - lib/appsignal/integrations/resque.rb
265
262
  - lib/appsignal/integrations/shoryuken.rb
266
263
  - lib/appsignal/integrations/sidekiq.rb
267
- - lib/appsignal/integrations/sinatra.rb
268
264
  - lib/appsignal/integrations/unicorn.rb
269
265
  - lib/appsignal/integrations/webmachine.rb
270
266
  - lib/appsignal/loaders.rb
@@ -283,13 +279,12 @@ files:
283
279
  - lib/appsignal/rack/abstract_middleware.rb
284
280
  - lib/appsignal/rack/body_wrapper.rb
285
281
  - lib/appsignal/rack/event_handler.rb
286
- - lib/appsignal/rack/generic_instrumentation.rb
287
282
  - lib/appsignal/rack/grape_middleware.rb
288
283
  - lib/appsignal/rack/hanami_middleware.rb
289
284
  - lib/appsignal/rack/instrumentation_middleware.rb
290
285
  - lib/appsignal/rack/rails_instrumentation.rb
291
286
  - lib/appsignal/rack/sinatra_instrumentation.rb
292
- - lib/appsignal/rack/streaming_listener.rb
287
+ - lib/appsignal/sample_data.rb
293
288
  - lib/appsignal/span.rb
294
289
  - lib/appsignal/system.rb
295
290
  - lib/appsignal/transaction.rb
@@ -345,6 +340,7 @@ files:
345
340
  - spec/lib/appsignal/hooks/active_support_notifications/start_finish_shared_examples.rb
346
341
  - spec/lib/appsignal/hooks/active_support_notifications_spec.rb
347
342
  - spec/lib/appsignal/hooks/activejob_spec.rb
343
+ - spec/lib/appsignal/hooks/at_exit_spec.rb
348
344
  - spec/lib/appsignal/hooks/celluloid_spec.rb
349
345
  - spec/lib/appsignal/hooks/data_mapper_spec.rb
350
346
  - spec/lib/appsignal/hooks/delayed_job_spec.rb
@@ -370,18 +366,14 @@ files:
370
366
  - spec/lib/appsignal/hooks_spec.rb
371
367
  - spec/lib/appsignal/integrations/data_mapper_spec.rb
372
368
  - spec/lib/appsignal/integrations/delayed_job_plugin_spec.rb
373
- - spec/lib/appsignal/integrations/grape_spec.rb
374
- - spec/lib/appsignal/integrations/hanami_spec.rb
375
369
  - spec/lib/appsignal/integrations/http_spec.rb
376
370
  - spec/lib/appsignal/integrations/mongo_ruby_driver_spec.rb
377
371
  - spec/lib/appsignal/integrations/net_http_spec.rb
378
372
  - spec/lib/appsignal/integrations/object_spec.rb
379
- - spec/lib/appsignal/integrations/padrino_spec.rb
380
373
  - spec/lib/appsignal/integrations/que_spec.rb
381
374
  - spec/lib/appsignal/integrations/railtie_spec.rb
382
375
  - spec/lib/appsignal/integrations/shoryuken_spec.rb
383
376
  - spec/lib/appsignal/integrations/sidekiq_spec.rb
384
- - spec/lib/appsignal/integrations/sinatra_spec.rb
385
377
  - spec/lib/appsignal/integrations/webmachine_spec.rb
386
378
  - spec/lib/appsignal/loaders/grape_spec.rb
387
379
  - spec/lib/appsignal/loaders/hanami_spec.rb
@@ -397,14 +389,13 @@ files:
397
389
  - spec/lib/appsignal/rack/abstract_middleware_spec.rb
398
390
  - spec/lib/appsignal/rack/body_wrapper_spec.rb
399
391
  - spec/lib/appsignal/rack/event_handler_spec.rb
400
- - spec/lib/appsignal/rack/generic_instrumentation_spec.rb
401
392
  - spec/lib/appsignal/rack/grape_middleware_spec.rb
402
393
  - spec/lib/appsignal/rack/hanami_middleware_spec.rb
403
394
  - spec/lib/appsignal/rack/instrumentation_middleware_spec.rb
404
395
  - spec/lib/appsignal/rack/rails_instrumentation_spec.rb
405
396
  - spec/lib/appsignal/rack/sinatra_instrumentation_spec.rb
406
- - spec/lib/appsignal/rack/streaming_listener_spec.rb
407
397
  - spec/lib/appsignal/rack_spec.rb
398
+ - spec/lib/appsignal/sample_data_spec.rb
408
399
  - spec/lib/appsignal/span_spec.rb
409
400
  - spec/lib/appsignal/system_spec.rb
410
401
  - spec/lib/appsignal/transaction_spec.rb
@@ -420,12 +411,12 @@ files:
420
411
  - spec/spec_helper.rb
421
412
  - spec/support/fixtures/generated_config.yml
422
413
  - spec/support/fixtures/projects/broken/config/appsignal.yml
423
- - spec/support/fixtures/projects/valid/config/application.rb
424
414
  - spec/support/fixtures/projects/valid/config/appsignal.yml
425
- - spec/support/fixtures/projects/valid/config/environments/development.rb
426
- - spec/support/fixtures/projects/valid/config/environments/production.rb
427
- - spec/support/fixtures/projects/valid/config/environments/test.rb
428
415
  - spec/support/fixtures/projects/valid/log/.gitkeep
416
+ - spec/support/fixtures/projects/valid_with_rails_app/config/application.rb
417
+ - spec/support/fixtures/projects/valid_with_rails_app/config/appsignal.yml
418
+ - spec/support/fixtures/projects/valid_with_rails_app/config/environment.rb
419
+ - spec/support/fixtures/projects/valid_with_rails_app/log/.gitkeep
429
420
  - spec/support/fixtures/uploaded_file.txt
430
421
  - spec/support/hanami/hanami_app.rb
431
422
  - spec/support/helpers/action_mailer_helpers.rb
@@ -455,7 +446,6 @@ files:
455
446
  - spec/support/mocks/fake_gc_profiler.rb
456
447
  - spec/support/mocks/fake_gvl_tools.rb
457
448
  - spec/support/mocks/mock_probe.rb
458
- - spec/support/rails/my_app.rb
459
449
  - spec/support/shared_examples/instrument.rb
460
450
  - spec/support/stubs/appsignal/loaders/loader_stub.rb
461
451
  - spec/support/stubs/delayed_job.rb
@@ -489,7 +479,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
489
479
  - !ruby/object:Gem::Version
490
480
  version: '0'
491
481
  requirements: []
492
- rubygems_version: 3.3.7
482
+ rubygems_version: 3.5.14
493
483
  signing_key:
494
484
  specification_version: 4
495
485
  summary: Logs performance and exception data from your app to appsignal.com
@@ -1,5 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem 'que', '1.0.0.beta3'
4
-
5
- gemspec :path => '../'
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Appsignal
4
- module Helpers
5
- module Heartbeat
6
- # @deprecated Use {Appsignal::CheckIn.cron} instead.
7
- def heartbeat(name, &block)
8
- unless @heartbeat_helper_deprecation_warning_emitted
9
- callers = caller
10
- Appsignal::Utils::StdoutAndLoggerMessage.warning \
11
- "The helper Appsignal.heartbeat has been deprecated. " \
12
- "Please update the helper call to Appsignal::CheckIn.cron " \
13
- "in the following file and elsewhere to remove this message.\n#{callers.first}"
14
- @heartbeat_helper_deprecation_warning_emitted = true
15
- end
16
- Appsignal::CheckIn.cron(name, &block)
17
- end
18
- end
19
- end
20
- end
@@ -1,35 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "appsignal"
4
- require "appsignal/rack/grape_middleware"
5
-
6
- Appsignal::Utils::StdoutAndLoggerMessage.warning(
7
- "The 'require \"appsignal/integrations/grape\"' file require integration " \
8
- "method is deprecated. " \
9
- "Please follow the Grape setup guide in our docs for the new method: " \
10
- "https://docs.appsignal.com/ruby/integrations/grape.html"
11
- )
12
-
13
- Appsignal.internal_logger.debug("Loading Grape integration")
14
-
15
- module Appsignal
16
- # @api private
17
- module Grape
18
- # Alias constants that have moved with a warning message that points to the
19
- # place to update the reference.
20
- def self.const_missing(name)
21
- case name
22
- when :Middleware
23
- callers = caller
24
- Appsignal::Utils::StdoutAndLoggerMessage.warning \
25
- "The constant Appsignal::Grape::Middleware has been deprecated. " \
26
- "Please update the constant name to " \
27
- "Appsignal::Rack::GrapeMiddleware in the following file to " \
28
- "remove this message.\n#{callers.first}"
29
- Appsignal::Rack::GrapeMiddleware
30
- else
31
- super
32
- end
33
- end
34
- end
35
- end
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "appsignal"
4
-
5
- Appsignal::Utils::StdoutAndLoggerMessage.warning(
6
- "The 'require \"appsignal/integrations/hanami\"' file require integration " \
7
- "method is deprecated. " \
8
- "Please follow the Hanami setup guide in our docs for the new method: " \
9
- "https://docs.appsignal.com/ruby/integrations/hanami.html"
10
- )
11
-
12
- Appsignal.load(:hanami)
13
- Appsignal.start
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "appsignal"
4
-
5
- Appsignal::Utils::StdoutAndLoggerMessage.warning(
6
- "The 'require \"appsignal/integrations/padrino\"' file require integration " \
7
- "method is deprecated. " \
8
- "Please follow the Padrino setup guide in our docs for the new method: " \
9
- "https://docs.appsignal.com/ruby/integrations/padrino.html"
10
- )
11
-
12
- Appsignal.load(:padrino)
13
- Appsignal.start
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "appsignal"
4
-
5
- Appsignal::Utils::StdoutAndLoggerMessage.warning(
6
- "The 'require \"appsignal/integrations/sinatra\"' file require integration " \
7
- "method is deprecated. " \
8
- "Please follow the Sinatra setup guide in our docs for the new method: " \
9
- "https://docs.appsignal.com/ruby/integrations/sinatra.html"
10
- )
11
-
12
- Appsignal.load(:sinatra)
13
- Appsignal.start
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Appsignal
4
- module Rack
5
- # @deprecated Use {InstrumentationMiddleware} instead.
6
- # @api private
7
- class GenericInstrumentation < AbstractMiddleware
8
- def initialize(app, options = {})
9
- options[:instrument_event_name] ||= "process_action.generic"
10
- super
11
- end
12
-
13
- def add_transaction_metadata_after(transaction, request)
14
- super
15
- transaction.set_action_if_nil("unknown")
16
- end
17
- end
18
-
19
- # @api private
20
- class GenericInstrumentationAlias < GenericInstrumentation; end
21
- end
22
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- Appsignal::Utils::StdoutAndLoggerMessage.warning \
4
- "The constant Appsignal::Rack::StreamingListener has been deprecated. " \
5
- "Please update the constant name to " \
6
- "Appsignal::Rack::InstrumentationMiddleware."
7
-
8
- module Appsignal
9
- module Rack
10
- # Instrumentation middleware that tracks exceptions in streaming Rack
11
- # responses.
12
- #
13
- # @deprecated Use {InstrumentationMiddleware} instead.
14
- # @api private
15
- class StreamingListener < AbstractMiddleware
16
- def initialize(app, options = {})
17
- options[:instrument_event_name] ||= "process_streaming_request.rack"
18
- super
19
- end
20
-
21
- def add_transaction_metadata_after(transaction, request)
22
- transaction.set_action_if_nil(request.env["appsignal.action"])
23
-
24
- super
25
- end
26
- end
27
- end
28
- end