appsignal 2.5.3 → 2.6.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +10 -1
  3. data/.rubocop_todo.yml +1 -1
  4. data/.travis.yml +8 -1
  5. data/CHANGELOG.md +12 -0
  6. data/appsignal.gemspec +2 -2
  7. data/benchmark.rake +6 -0
  8. data/ext/agent.yml +35 -35
  9. data/ext/appsignal_extension.c +27 -9
  10. data/lib/appsignal.rb +15 -19
  11. data/lib/appsignal/auth_check.rb +2 -0
  12. data/lib/appsignal/capistrano.rb +2 -0
  13. data/lib/appsignal/cli.rb +2 -0
  14. data/lib/appsignal/cli/demo.rb +2 -0
  15. data/lib/appsignal/cli/diagnose.rb +2 -0
  16. data/lib/appsignal/cli/helpers.rb +2 -0
  17. data/lib/appsignal/cli/install.rb +15 -1
  18. data/lib/appsignal/cli/notify_of_deploy.rb +8 -0
  19. data/lib/appsignal/config.rb +44 -5
  20. data/lib/appsignal/demo.rb +2 -0
  21. data/lib/appsignal/event_formatter.rb +2 -0
  22. data/lib/appsignal/event_formatter/action_view/render_formatter.rb +2 -0
  23. data/lib/appsignal/event_formatter/active_record/instantiation_formatter.rb +2 -0
  24. data/lib/appsignal/event_formatter/active_record/sql_formatter.rb +2 -0
  25. data/lib/appsignal/event_formatter/elastic_search/search_formatter.rb +2 -0
  26. data/lib/appsignal/event_formatter/faraday/request_formatter.rb +2 -0
  27. data/lib/appsignal/event_formatter/mongo_ruby_driver/query_formatter.rb +2 -0
  28. data/lib/appsignal/event_formatter/moped/query_formatter.rb +2 -0
  29. data/lib/appsignal/extension.rb +2 -0
  30. data/lib/appsignal/extension/jruby.rb +15 -13
  31. data/lib/appsignal/garbage_collection_profiler.rb +2 -0
  32. data/lib/appsignal/hooks.rb +2 -0
  33. data/lib/appsignal/hooks/action_cable.rb +2 -0
  34. data/lib/appsignal/hooks/active_support_notifications.rb +2 -0
  35. data/lib/appsignal/hooks/celluloid.rb +2 -0
  36. data/lib/appsignal/hooks/data_mapper.rb +2 -0
  37. data/lib/appsignal/hooks/delayed_job.rb +2 -0
  38. data/lib/appsignal/hooks/mongo_ruby_driver.rb +2 -0
  39. data/lib/appsignal/hooks/net_http.rb +2 -0
  40. data/lib/appsignal/hooks/passenger.rb +2 -0
  41. data/lib/appsignal/hooks/puma.rb +2 -0
  42. data/lib/appsignal/hooks/que.rb +2 -0
  43. data/lib/appsignal/hooks/rake.rb +2 -0
  44. data/lib/appsignal/hooks/redis.rb +2 -0
  45. data/lib/appsignal/hooks/sequel.rb +2 -0
  46. data/lib/appsignal/hooks/shoryuken.rb +6 -2
  47. data/lib/appsignal/hooks/sidekiq.rb +4 -2
  48. data/lib/appsignal/hooks/unicorn.rb +2 -0
  49. data/lib/appsignal/hooks/webmachine.rb +2 -0
  50. data/lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb +2 -0
  51. data/lib/appsignal/integrations/data_mapper.rb +2 -0
  52. data/lib/appsignal/integrations/delayed_job_plugin.rb +6 -2
  53. data/lib/appsignal/integrations/grape.rb +2 -0
  54. data/lib/appsignal/integrations/mongo_ruby_driver.rb +2 -0
  55. data/lib/appsignal/integrations/object.rb +2 -0
  56. data/lib/appsignal/integrations/padrino.rb +3 -4
  57. data/lib/appsignal/integrations/que.rb +2 -0
  58. data/lib/appsignal/integrations/railtie.rb +2 -0
  59. data/lib/appsignal/integrations/rake.rb +2 -0
  60. data/lib/appsignal/integrations/resque.rb +2 -0
  61. data/lib/appsignal/integrations/resque_active_job.rb +6 -2
  62. data/lib/appsignal/integrations/sinatra.rb +2 -0
  63. data/lib/appsignal/integrations/webmachine.rb +2 -0
  64. data/lib/appsignal/js_exception_transaction.rb +2 -0
  65. data/lib/appsignal/marker.rb +2 -0
  66. data/lib/appsignal/minutely.rb +2 -0
  67. data/lib/appsignal/rack/generic_instrumentation.rb +2 -0
  68. data/lib/appsignal/rack/js_exception_catcher.rb +2 -0
  69. data/lib/appsignal/rack/rails_instrumentation.rb +2 -0
  70. data/lib/appsignal/rack/sinatra_instrumentation.rb +2 -0
  71. data/lib/appsignal/rack/streaming_listener.rb +2 -0
  72. data/lib/appsignal/system.rb +2 -0
  73. data/lib/appsignal/transaction.rb +13 -10
  74. data/lib/appsignal/transmitter.rb +2 -0
  75. data/lib/appsignal/utils.rb +3 -1
  76. data/lib/appsignal/utils/{params_sanitizer.rb → hash_sanitizer.rb} +12 -11
  77. data/lib/appsignal/utils/query_params_sanitizer.rb +2 -0
  78. data/lib/appsignal/version.rb +3 -1
  79. data/lib/sequel/extensions/appsignal_integration.rb +2 -0
  80. data/resources/appsignal.yml.erb +5 -0
  81. data/spec/lib/appsignal/auth_check_spec.rb +11 -2
  82. data/spec/lib/appsignal/cli/install_spec.rb +33 -0
  83. data/spec/lib/appsignal/config_spec.rb +76 -18
  84. data/spec/lib/appsignal/extension_spec.rb +3 -3
  85. data/spec/lib/appsignal/integrations/padrino_spec.rb +8 -28
  86. data/spec/lib/appsignal/transaction_spec.rb +63 -30
  87. data/spec/lib/appsignal/utils/{params_sanitizer_spec.rb → hash_sanitizer_spec.rb} +6 -6
  88. data/spec/lib/appsignal_spec.rb +180 -158
  89. data/spec/support/helpers/std_streams_helper.rb +19 -12
  90. data/spec/support/project_fixture/config/appsignal.yml +21 -0
  91. metadata +11 -11
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  class CLI
3
5
  # Command line tool to send a "Deploy Marker" for an application to
@@ -44,6 +46,12 @@ module Appsignal
44
46
  # @example help command
45
47
  # appsignal notify_of_deploy --help
46
48
  #
49
+ # @deprecated This method of sending AppSignal deploy markers is
50
+ # deprecated. Use the [`revision` config option]
51
+ # (https://docs.appsignal.com/ruby/configuration/options.html#app_revision-revision)
52
+ # instead. For more information, please read the [deploy markers]
53
+ # (https://docs.appsignal.com/application/markers/deploy-markers.html)
54
+ # documentation.
47
55
  # @since 0.2.5
48
56
  # @see Appsignal::Marker Appsignal::Marker
49
57
  # @see http://docs.appsignal.com/ruby/command-line/notify_of_deploy.html
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "erb"
2
4
  require "yaml"
3
5
  require "uri"
@@ -13,6 +15,7 @@ module Appsignal
13
15
  :ignore_errors => [],
14
16
  :ignore_namespaces => [],
15
17
  :filter_parameters => [],
18
+ :filter_session_data => [],
16
19
  :send_params => true,
17
20
  :endpoint => "https://push.appsignal.com",
18
21
  :instrument_net_http => true,
@@ -25,7 +28,6 @@ module Appsignal
25
28
  :enable_gc_instrumentation => false,
26
29
  :enable_host_metrics => true,
27
30
  :enable_minutely_probes => false,
28
- :hostname => ::Socket.gethostname,
29
31
  :ca_file_path => File.expand_path(File.join("../../../resources/cacert.pem"), __FILE__),
30
32
  :dns_servers => [],
31
33
  :files_world_accessible => true
@@ -49,6 +51,7 @@ module Appsignal
49
51
  "APPSIGNAL_IGNORE_ERRORS" => :ignore_errors,
50
52
  "APPSIGNAL_IGNORE_NAMESPACES" => :ignore_namespaces,
51
53
  "APPSIGNAL_FILTER_PARAMETERS" => :filter_parameters,
54
+ "APPSIGNAL_FILTER_SESSION_DATA" => :filter_session_data,
52
55
  "APPSIGNAL_SEND_PARAMS" => :send_params,
53
56
  "APPSIGNAL_HTTP_PROXY" => :http_proxy,
54
57
  "APPSIGNAL_ENABLE_ALLOCATION_TRACKING" => :enable_allocation_tracking,
@@ -60,8 +63,18 @@ module Appsignal
60
63
  "APPSIGNAL_HOSTNAME" => :hostname,
61
64
  "APPSIGNAL_CA_FILE_PATH" => :ca_file_path,
62
65
  "APPSIGNAL_DNS_SERVERS" => :dns_servers,
63
- "APPSIGNAL_FILES_WORLD_ACCESSIBLE" => :files_world_accessible
66
+ "APPSIGNAL_FILES_WORLD_ACCESSIBLE" => :files_world_accessible,
67
+ "APPSIGNAL_REQUEST_HEADERS" => :request_headers,
68
+ "APP_REVISION" => :revision
64
69
  }.freeze
70
+ # Formatted in two-dimensional array for easy printing
71
+ SUGGESTED_REQUEST_HEADERS = [
72
+ %w[HTTP_ACCEPT HTTP_ACCEPT_CHARSET HTTP_ACCEPT_ENCODING],
73
+ %w[HTTP_ACCEPT_LANGUAGE HTTP_CACHE_CONTROL HTTP_CONNECTION],
74
+ %w[CONTENT_LENGTH PATH_INFO HTTP_RANGE],
75
+ %w[REQUEST_METHOD REQUEST_URI SERVER_NAME SERVER_PORT],
76
+ %w[SERVER_PROTOCOL]
77
+ ].freeze
65
78
 
66
79
  # Mapping of old and deprecated AppSignal configuration keys
67
80
  DEPRECATED_CONFIG_KEY_MAPPING = {
@@ -153,7 +166,6 @@ module Appsignal
153
166
  ENV["_APPSIGNAL_IGNORE_ACTIONS"] = config_hash[:ignore_actions].join(",")
154
167
  ENV["_APPSIGNAL_IGNORE_ERRORS"] = config_hash[:ignore_errors].join(",")
155
168
  ENV["_APPSIGNAL_IGNORE_NAMESPACES"] = config_hash[:ignore_namespaces].join(",")
156
- ENV["_APPSIGNAL_FILTER_PARAMETERS"] = config_hash[:filter_parameters].join(",")
157
169
  ENV["_APPSIGNAL_SEND_PARAMS"] = config_hash[:send_params].to_s
158
170
  ENV["_APPSIGNAL_RUNNING_IN_CONTAINER"] = config_hash[:running_in_container].to_s
159
171
  ENV["_APPSIGNAL_WORKING_DIR_PATH"] = config_hash[:working_dir_path] if config_hash[:working_dir_path]
@@ -164,6 +176,7 @@ module Appsignal
164
176
  ENV["_APPSIGNAL_CA_FILE_PATH"] = config_hash[:ca_file_path].to_s
165
177
  ENV["_APPSIGNAL_DNS_SERVERS"] = config_hash[:dns_servers].join(",")
166
178
  ENV["_APPSIGNAL_FILES_WORLD_ACCESSIBLE"] = config_hash[:files_world_accessible].to_s
179
+ ENV["_APP_REVISION"] = config_hash[:revision].to_s
167
180
  end
168
181
 
169
182
  def validate
@@ -184,10 +197,35 @@ module Appsignal
184
197
  @valid = false
185
198
  @logger.error "Push api key not set after loading config"
186
199
  end
200
+
201
+ check_if_request_headers_option_is_set
187
202
  end
188
203
 
189
204
  private
190
205
 
206
+ def check_if_request_headers_option_is_set
207
+ return unless valid?
208
+ return if config_hash.key?(:request_headers) || env == "test"
209
+
210
+ multi_line_request_headers = SUGGESTED_REQUEST_HEADERS.map do |row|
211
+ row.map(&:inspect).join(", ")
212
+ end.join(",\n ")
213
+ single_line_request_headers = SUGGESTED_REQUEST_HEADERS.flatten.join(",")
214
+
215
+ puts "Warning: The `request_headers` config option was not set " \
216
+ " in the AppSignal configuration, falling back to the default list. " \
217
+ "Please explicitly list response headers to send to AppSignal in " \
218
+ "config/appsignal.yml:\n\n" \
219
+ " request_headers: [\n" \
220
+ " #{multi_line_request_headers}\n" \
221
+ "]\n\n" \
222
+ "Or set the APPSIGNAL_REQUEST_HEADERS environment variable:\n\n"\
223
+ " $ export APPSIGNAL_REQUEST_HEADERS=" \
224
+ "\"#{single_line_request_headers}\"\n\n" \
225
+ "Please check https://github.com/appsignal/appsignal-ruby/pull/406 " \
226
+ "for more information on this change."
227
+ end
228
+
191
229
  def config_file
192
230
  @config_file ||=
193
231
  root_path.nil? ? nil : File.join(root_path, "config", "appsignal.yml")
@@ -244,7 +282,7 @@ module Appsignal
244
282
  %w[APPSIGNAL_PUSH_API_KEY APPSIGNAL_APP_NAME APPSIGNAL_PUSH_API_ENDPOINT
245
283
  APPSIGNAL_FRONTEND_ERROR_CATCHING_PATH APPSIGNAL_HTTP_PROXY
246
284
  APPSIGNAL_LOG APPSIGNAL_LOG_PATH APPSIGNAL_WORKING_DIR_PATH
247
- APPSIGNAL_HOSTNAME APPSIGNAL_CA_FILE_PATH].each do |var|
285
+ APPSIGNAL_HOSTNAME APPSIGNAL_CA_FILE_PATH APP_REVISION].each do |var|
248
286
  env_var = ENV[var]
249
287
  next unless env_var
250
288
  config[ENV_TO_KEY_MAPPING[var]] = env_var
@@ -265,7 +303,8 @@ module Appsignal
265
303
 
266
304
  # Configuration with array of strings type
267
305
  %w[APPSIGNAL_IGNORE_ACTIONS APPSIGNAL_IGNORE_ERRORS
268
- APPSIGNAL_IGNORE_NAMESPACES APPSIGNAL_FILTER_PARAMETERS].each do |var|
306
+ APPSIGNAL_IGNORE_NAMESPACES APPSIGNAL_FILTER_PARAMETERS
307
+ APPSIGNAL_FILTER_SESSION_DATA APPSIGNAL_REQUEST_HEADERS].each do |var|
269
308
  env_var = ENV[var]
270
309
  next unless env_var
271
310
  config[ENV_TO_KEY_MAPPING[var]] = env_var.split(",")
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "rack/mock"
2
4
 
3
5
  module Appsignal
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  # Keeps track of formatters for types event that we can use to get
3
5
  # the title and body of an event. Formatters should inherit from this class
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  class EventFormatter
3
5
  # @api private
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  class EventFormatter
3
5
  # @api private
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  class EventFormatter
3
5
  # @api private
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  class EventFormatter
3
5
  # @api private
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  class EventFormatter
3
5
  # @api private
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  class EventFormatter
3
5
  # @api private
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  class EventFormatter
3
5
  # @api private
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "yaml"
2
4
 
3
5
  begin
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "ffi"
2
4
 
3
5
  module Appsignal
@@ -61,7 +63,7 @@ module Appsignal
61
63
 
62
64
  # Metrics methods
63
65
  attach_function :appsignal_set_gauge,
64
- [:appsignal_string, :double],
66
+ [:appsignal_string, :double, :pointer],
65
67
  :void
66
68
  attach_function :appsignal_set_host_gauge,
67
69
  [:appsignal_string, :double],
@@ -70,10 +72,10 @@ module Appsignal
70
72
  [:appsignal_string, :double],
71
73
  :void
72
74
  attach_function :appsignal_increment_counter,
73
- [:appsignal_string, :int64],
75
+ [:appsignal_string, :int64, :pointer],
74
76
  :void
75
77
  attach_function :appsignal_add_distribution_value,
76
- [:appsignal_string, :double],
78
+ [:appsignal_string, :double, :pointer],
77
79
  :void
78
80
 
79
81
  # Transaction methods
@@ -222,8 +224,8 @@ module Appsignal
222
224
  appsignal_running_in_container
223
225
  end
224
226
 
225
- def set_gauge(key, value)
226
- appsignal_set_gauge(make_appsignal_string(key), value)
227
+ def set_gauge(key, value, tags)
228
+ appsignal_set_gauge(make_appsignal_string(key), value, tags.pointer)
227
229
  end
228
230
 
229
231
  def set_host_gauge(key, value)
@@ -234,12 +236,12 @@ module Appsignal
234
236
  appsignal_set_process_gauge(make_appsignal_string(key), value)
235
237
  end
236
238
 
237
- def increment_counter(key, value)
238
- appsignal_increment_counter(make_appsignal_string(key), value)
239
+ def increment_counter(key, value, tags)
240
+ appsignal_increment_counter(make_appsignal_string(key), value, tags.pointer)
239
241
  end
240
242
 
241
- def add_distribution_value(key, value)
242
- appsignal_add_distribution_value(make_appsignal_string(key), value)
243
+ def add_distribution_value(key, value, tags)
244
+ appsignal_add_distribution_value(make_appsignal_string(key), value, tags.pointer)
243
245
  end
244
246
 
245
247
  class Transaction # rubocop:disable Metrics/ClassLength
@@ -314,14 +316,14 @@ module Appsignal
314
316
  )
315
317
  end
316
318
 
317
- def set_action(action_name) # rubocop:disable Style/AccessorMethodName
319
+ def set_action(action_name) # rubocop:disable Naming/AccessorMethodName
318
320
  Extension.appsignal_set_transaction_action(
319
321
  pointer,
320
322
  make_appsignal_string(action_name)
321
323
  )
322
324
  end
323
325
 
324
- def set_namespace(namespace) # rubocop:disable Style/AccessorMethodName
326
+ def set_namespace(namespace) # rubocop:disable Naming/AccessorMethodName
325
327
  Extension.appsignal_set_transaction_namespace(
326
328
  pointer,
327
329
  make_appsignal_string(namespace)
@@ -336,7 +338,7 @@ module Appsignal
336
338
  )
337
339
  end
338
340
 
339
- def set_queue_start(time) # rubocop:disable Style/AccessorMethodName
341
+ def set_queue_start(time) # rubocop:disable Naming/AccessorMethodName
340
342
  Extension.appsignal_set_transaction_queue_start(pointer, time)
341
343
  end
342
344
 
@@ -405,7 +407,7 @@ module Appsignal
405
407
  )
406
408
  end
407
409
 
408
- def set_nil(key) # rubocop:disable Style/AccessorMethodName
410
+ def set_nil(key) # rubocop:disable Naming/AccessorMethodName
409
411
  Extension.appsignal_data_map_set_null(
410
412
  pointer,
411
413
  make_appsignal_string(key)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  # {Appsignal::GarbageCollectionProfiler} wraps Ruby's `GC::Profiler` to be
3
5
  # able to track garbage collection time for multiple transactions, while
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  # @api private
3
5
  class Hooks
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  class Hooks
3
5
  # @api private
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  class Hooks
3
5
  # @api private
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  class Hooks
3
5
  # @api private
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  class Hooks
3
5
  # @api private
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  class Hooks
3
5
  # @api private
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  class Hooks
3
5
  # @api private
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "net/http"
2
4
 
3
5
  module Appsignal
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  class Hooks
3
5
  # @api private
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  class Hooks
3
5
  # @api private
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  class Hooks
3
5
  # @api private
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  class Hooks
3
5
  # @api private
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  class Hooks
3
5
  # @api private
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  class Hooks
3
5
  # @api private
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  class Hooks
3
5
  # @api private
@@ -11,8 +13,10 @@ module Appsignal
11
13
  }
12
14
 
13
15
  args = body.is_a?(Hash) ? body : { :params => body }
14
- options[:params] = Appsignal::Utils::ParamsSanitizer.sanitize args,
15
- :filter_parameters => Appsignal.config[:filter_parameters]
16
+ options[:params] = Appsignal::Utils::HashSanitizer.sanitize(
17
+ args,
18
+ Appsignal.config[:filter_parameters]
19
+ )
16
20
 
17
21
  if sqs_msg.attributes.key?("SentTimestamp")
18
22
  options[:queue_start] = Time.at(sqs_msg.attributes["SentTimestamp"].to_i / 1000)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "yaml"
2
4
 
3
5
  module Appsignal
@@ -69,9 +71,9 @@ module Appsignal
69
71
  end
70
72
 
71
73
  def filtered_arguments(job)
72
- Appsignal::Utils::ParamsSanitizer.sanitize(
74
+ Appsignal::Utils::HashSanitizer.sanitize(
73
75
  parse_arguments(job),
74
- :filter_parameters => Appsignal.config[:filter_parameters]
76
+ Appsignal.config[:filter_parameters]
75
77
  )
76
78
  end
77
79
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  class Hooks
3
5
  # @api private
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Appsignal
2
4
  class Hooks
3
5
  # @api private