appsignal 3.7.0-java → 3.7.1-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.
data/ext/base.rb CHANGED
@@ -190,6 +190,9 @@ def store_download_version_on_report
190
190
  end
191
191
 
192
192
  def http_proxy
193
+ proxy = try_http_proxy_value(ENV.fetch("APPSIGNAL_HTTP_PROXY", nil))
194
+ return [proxy, nil] if proxy
195
+
193
196
  proxy, error =
194
197
  begin
195
198
  [try_http_proxy_value(Gem.configuration[:http_proxy]), nil]
@@ -8,7 +8,7 @@ require "tmpdir"
8
8
 
9
9
  module Appsignal
10
10
  class Config
11
- include Appsignal::Utils::DeprecationMessage
11
+ include Appsignal::Utils::StdoutAndLoggerMessage
12
12
 
13
13
  DEFAULT_CONFIG = {
14
14
  :activejob_report_errors => "all",
@@ -320,20 +320,29 @@ module Appsignal
320
320
  end
321
321
 
322
322
  def log_file_path
323
+ return @log_file_path if defined? @log_file_path
324
+
323
325
  path = config_hash[:log_path] || (root_path && File.join(root_path, "log"))
324
- return File.join(File.realpath(path), "appsignal.log") if path && File.writable?(path)
326
+ if path && File.writable?(path)
327
+ @log_file_path = File.join(File.realpath(path), "appsignal.log")
328
+ return @log_file_path
329
+ end
325
330
 
326
331
  system_tmp_dir = self.class.system_tmp_dir
327
332
  if File.writable? system_tmp_dir
328
333
  $stdout.puts "appsignal: Unable to log to '#{path}'. Logging to " \
329
- "'#{system_tmp_dir}' instead. Please check the " \
330
- "permissions for the application's (log) directory."
331
- File.join(system_tmp_dir, "appsignal.log")
334
+ "'#{system_tmp_dir}' instead. " \
335
+ "Please check the permissions for the application's (log) " \
336
+ "directory."
337
+ @log_file_path = File.join(system_tmp_dir, "appsignal.log")
332
338
  else
333
339
  $stdout.puts "appsignal: Unable to log to '#{path}' or the " \
334
340
  "'#{system_tmp_dir}' fallback. Please check the permissions " \
335
341
  "for the application's (log) directory."
342
+ @log_file_path = nil
336
343
  end
344
+
345
+ @log_file_path
337
346
  end
338
347
 
339
348
  def valid?
@@ -476,7 +485,7 @@ module Appsignal
476
485
  def maintain_backwards_compatibility
477
486
  return unless config_hash.key?(:working_dir_path)
478
487
 
479
- deprecation_message \
488
+ stdout_and_logger_warning \
480
489
  "The `working_dir_path` option is deprecated, please use " \
481
490
  "`working_directory_path` instead and specify the " \
482
491
  "full path to the working directory",
@@ -542,7 +551,7 @@ module Appsignal
542
551
  config[:send_session_data] = true # Set default value
543
552
  end
544
553
  else
545
- deprecation_message "The `skip_session_data` config option is " \
554
+ stdout_and_logger_warning "The `skip_session_data` config option is " \
546
555
  "deprecated. Please use `send_session_data` instead.",
547
556
  logger
548
557
  # Not configured by user
@@ -14,8 +14,6 @@ module Appsignal
14
14
  # @api private
15
15
  class EventFormatter
16
16
  class << self
17
- include Appsignal::Utils::DeprecationMessage
18
-
19
17
  def formatters
20
18
  @formatters ||= {}
21
19
  end
@@ -3,7 +3,7 @@
3
3
  module Appsignal
4
4
  module Helpers
5
5
  module Instrumentation # rubocop:disable Metrics/ModuleLength
6
- include Appsignal::Utils::DeprecationMessage
6
+ include Appsignal::Utils::StdoutAndLoggerMessage
7
7
 
8
8
  # Creates an AppSignal transaction for the given block.
9
9
  #
@@ -207,7 +207,7 @@ module Appsignal
207
207
  )
208
208
  if tags
209
209
  call_location = caller(1..1).first
210
- deprecation_message \
210
+ stdout_and_logger_warning \
211
211
  "The tags argument for `Appsignal.send_error` is deprecated. " \
212
212
  "Please use the block method to set tags instead.\n\n" \
213
213
  " Appsignal.send_error(error) do |transaction|\n" \
@@ -217,7 +217,7 @@ module Appsignal
217
217
  end
218
218
  if namespace
219
219
  call_location = caller(1..1).first
220
- deprecation_message \
220
+ stdout_and_logger_warning \
221
221
  "The namespace argument for `Appsignal.send_error` is deprecated. " \
222
222
  "Please use the block method to set the namespace instead.\n\n" \
223
223
  " Appsignal.send_error(error) do |transaction|\n" \
@@ -300,7 +300,7 @@ module Appsignal
300
300
  def set_error(exception, tags = nil, namespace = nil)
301
301
  if tags
302
302
  call_location = caller(1..1).first
303
- deprecation_message \
303
+ stdout_and_logger_warning \
304
304
  "The tags argument for `Appsignal.set_error` is deprecated. " \
305
305
  "Please use the block method to set tags instead.\n\n" \
306
306
  " Appsignal.set_error(error) do |transaction|\n" \
@@ -310,7 +310,7 @@ module Appsignal
310
310
  end
311
311
  if namespace
312
312
  call_location = caller(1..1).first
313
- deprecation_message \
313
+ stdout_and_logger_warning \
314
314
  "The namespace argument for `Appsignal.set_error` is deprecated. " \
315
315
  "Please use the block method to set the namespace instead.\n\n" \
316
316
  " Appsignal.set_error(error) do |transaction|\n" \
@@ -15,7 +15,7 @@ module Appsignal
15
15
  end
16
16
 
17
17
  def set_host_gauge(_key, _value)
18
- Appsignal::Utils::DeprecationMessage.message \
18
+ Appsignal::Utils::StdoutAndLoggerMessage.warning \
19
19
  "The `set_host_gauge` method has been deprecated. " \
20
20
  "Calling this method has no effect. " \
21
21
  "Please remove method call in the following file to remove " \
@@ -23,7 +23,7 @@ module Appsignal
23
23
  end
24
24
 
25
25
  def set_process_gauge(_key, _value)
26
- Appsignal::Utils::DeprecationMessage.message \
26
+ Appsignal::Utils::StdoutAndLoggerMessage.warning \
27
27
  "The `set_process_gauge` method has been deprecated. " \
28
28
  "Calling this method has no effect. " \
29
29
  "Please remove method call in the following file to remove " \
@@ -16,7 +16,7 @@ module Appsignal
16
16
  end
17
17
 
18
18
  def install
19
- Appsignal::Minutely.probes.register :gvl, Appsignal::Probes::GvlProbe
19
+ Appsignal::Probes.probes.register :gvl, Appsignal::Probes::GvlProbe
20
20
  ::GVLTools::GlobalTimer.enable if Appsignal.config[:enable_gvl_global_timer]
21
21
  ::GVLTools::WaitingThreads.enable if Appsignal.config[:enable_gvl_waiting_threads]
22
22
  end
@@ -11,7 +11,7 @@ module Appsignal
11
11
  end
12
12
 
13
13
  def install
14
- Appsignal::Minutely.probes.register :mri, Appsignal::Probes::MriProbe
14
+ Appsignal::Probes.probes.register :mri, Appsignal::Probes::MriProbe
15
15
  end
16
16
  end
17
17
  end
@@ -11,7 +11,7 @@ module Appsignal
11
11
 
12
12
  def install
13
13
  require "appsignal/integrations/sidekiq"
14
- Appsignal::Minutely.probes.register :sidekiq, Appsignal::Probes::SidekiqProbe
14
+ Appsignal::Probes.probes.register :sidekiq, Appsignal::Probes::SidekiqProbe
15
15
 
16
16
  ::Sidekiq.configure_server do |config|
17
17
  config.error_handlers <<
@@ -76,7 +76,7 @@ module Appsignal
76
76
  when :SidekiqPlugin
77
77
  require "appsignal/integrations/sidekiq"
78
78
  callers = caller
79
- Appsignal::Utils::DeprecationMessage.message \
79
+ Appsignal::Utils::StdoutAndLoggerMessage.warning \
80
80
  "The constant Appsignal::Hooks::SidekiqPlugin has been deprecated. " \
81
81
  "Please update the constant name to Appsignal::Integrations::SidekiqMiddleware " \
82
82
  "in the following file to remove this message.\n#{callers.first}"
@@ -14,7 +14,7 @@ module Appsignal
14
14
  end
15
15
 
16
16
  console do
17
- Appsignal::Minutely.stop
17
+ Appsignal::Probes.stop
18
18
  end
19
19
 
20
20
  def self.initialize_appsignal(app)
@@ -2,6 +2,274 @@
2
2
 
3
3
  module Appsignal
4
4
  module Probes
5
+ class ProbeCollection
6
+ def initialize
7
+ @probes = {}
8
+ end
9
+
10
+ # @return [Integer] Number of probes that are registered.
11
+ def count
12
+ probes.count
13
+ end
14
+
15
+ # Clears all probes from the list.
16
+ # @return [void]
17
+ def clear
18
+ probes.clear
19
+ end
20
+
21
+ # Fetch a probe using its name.
22
+ # @param key [Symbol/String] The name of the probe to fetch.
23
+ # @return [Object] Returns the registered probe.
24
+ def [](key)
25
+ probes[key]
26
+ end
27
+
28
+ # @deprecated Use {Appsignal::Probes.register} instead.
29
+ def register(name, probe)
30
+ Appsignal::Utils::StdoutAndLoggerMessage.warning(
31
+ "The method 'Appsignal::Probes.probes.register' is deprecated. " \
32
+ "Use 'Appsignal::Probes.register' instead."
33
+ )
34
+ Appsignal::Probes.register(name, probe)
35
+ end
36
+
37
+ # @api private
38
+ def internal_register(name, probe)
39
+ if probes.key?(name)
40
+ logger.debug "A probe with the name `#{name}` is already " \
41
+ "registered. Overwriting the entry with the new probe."
42
+ end
43
+ probes[name] = probe
44
+ end
45
+
46
+ # @api private
47
+ def unregister(name)
48
+ probes.delete(name)
49
+ end
50
+
51
+ # @api private
52
+ def each(&block)
53
+ probes.each(&block)
54
+ end
55
+
56
+ private
57
+
58
+ attr_reader :probes
59
+
60
+ def logger
61
+ Appsignal.internal_logger
62
+ end
63
+ end
64
+
65
+ class << self
66
+ # @api private
67
+ def mutex
68
+ @mutex ||= Thread::Mutex.new
69
+ end
70
+
71
+ # @see ProbeCollection
72
+ # @return [ProbeCollection] Returns list of probes.
73
+ def probes
74
+ @probes ||= ProbeCollection.new
75
+ end
76
+
77
+ # Register a new minutely probe.
78
+ #
79
+ # Supported probe types are:
80
+ #
81
+ # - Lambda - A lambda is an object that listens to a `call` method call.
82
+ # This `call` method is called every minute.
83
+ # - Class - A class object is an object that listens to a `new` and
84
+ # `call` method call. The `new` method is called when the minutely
85
+ # probe thread is started to initialize all probes. This allows probes
86
+ # to load dependencies once beforehand. Their `call` method is called
87
+ # every minute.
88
+ # - Class instance - A class instance object is an object that listens to
89
+ # a `call` method call. The `call` method is called every minute.
90
+ #
91
+ # @example Register a new probe
92
+ # Appsignal::Probes.register :my_probe, lambda {}
93
+ #
94
+ # @example Overwrite an existing registered probe
95
+ # Appsignal::Probes.register :my_probe, lambda {}
96
+ # Appsignal::Probes.register :my_probe, lambda { puts "hello" }
97
+ #
98
+ # @example Add a lambda as a probe
99
+ # Appsignal::Probes.register :my_probe, lambda { puts "hello" }
100
+ # # "hello" # printed every minute
101
+ #
102
+ # @example Add a probe instance
103
+ # class MyProbe
104
+ # def initialize
105
+ # puts "started"
106
+ # end
107
+ #
108
+ # def call
109
+ # puts "called"
110
+ # end
111
+ # end
112
+ #
113
+ # Appsignal::Probes.register :my_probe, MyProbe.new
114
+ # # "started" # printed immediately
115
+ # # "called" # printed every minute
116
+ #
117
+ # @example Add a probe class
118
+ # class MyProbe
119
+ # def initialize
120
+ # # Add things that only need to be done on start up for this probe
121
+ # require "some/library/dependency"
122
+ # @cache = {} # initialize a local cache variable
123
+ # puts "started"
124
+ # end
125
+ #
126
+ # def call
127
+ # puts "called"
128
+ # end
129
+ # end
130
+ #
131
+ # Appsignal::Probes.register :my_probe, MyProbe
132
+ # Appsignal::Probes.start # This is called for you
133
+ # # "started" # Printed on Appsignal::Probes.start
134
+ # # "called" # Repeated every minute
135
+ #
136
+ # @param name [Symbol/String] Name of the probe. Can be used with
137
+ # {ProbeCollection#[]}. This name will be used in errors in the log and
138
+ # allows overwriting of probes by registering new ones with the same
139
+ # name.
140
+ # @param probe [Object] Any object that listens to the `call` method will
141
+ # be used as a probe.
142
+ # @return [void]
143
+ def register(name, probe)
144
+ probes.internal_register(name, probe)
145
+
146
+ initialize_probe(name, probe) if started?
147
+ end
148
+
149
+ # Unregister a probe that's registered with {register}.
150
+ # Can also be used to unregister automatically registered probes by the
151
+ # gem.
152
+ #
153
+ # @example Unregister probes
154
+ # # First register a probe
155
+ # Appsignal::Probes.register :my_probe, lambda {}
156
+ #
157
+ # # Then unregister a probe if needed
158
+ # Appsignal::Probes.unregister :my_probe
159
+ #
160
+ # @param name [Symbol/String] Name of the probe used to {register} the
161
+ # probe.
162
+ # @return [void]
163
+ def unregister(name)
164
+ probes.unregister(name)
165
+
166
+ uninitialize_probe(name)
167
+ end
168
+
169
+ # @api private
170
+ def start
171
+ stop
172
+ @started = true
173
+ @thread = Thread.new do
174
+ # Advise multi-threaded app servers to ignore this thread
175
+ # for the purposes of fork safety warnings
176
+ if Thread.current.respond_to?(:thread_variable_set)
177
+ Thread.current.thread_variable_set(:fork_safe, true)
178
+ end
179
+
180
+ sleep initial_wait_time
181
+ initialize_probes
182
+ loop do
183
+ logger = Appsignal.internal_logger
184
+ mutex.synchronize do
185
+ logger.debug("Gathering minutely metrics with #{probe_instances.count} probes")
186
+ probe_instances.each do |name, probe|
187
+ logger.debug("Gathering minutely metrics with '#{name}' probe")
188
+ probe.call
189
+ rescue => ex
190
+ logger.error "Error in minutely probe '#{name}': #{ex}"
191
+ logger.debug ex.backtrace.join("\n")
192
+ end
193
+ end
194
+ sleep wait_time
195
+ end
196
+ end
197
+ end
198
+
199
+ # Returns if the probes thread has been started. If the value is false or
200
+ # nil, it has not been started yet.
201
+ #
202
+ # @return [Boolean, nil]
203
+ def started?
204
+ @started
205
+ end
206
+
207
+ # Stop the minutely probes mechanism. Stop the thread and clear all probe
208
+ # instances.
209
+ def stop
210
+ defined?(@thread) && @thread.kill
211
+ @started = false
212
+ probe_instances.clear
213
+ end
214
+
215
+ # @api private
216
+ def wait_time
217
+ 60 - Time.now.sec
218
+ end
219
+
220
+ private
221
+
222
+ def initial_wait_time
223
+ remaining_seconds = 60 - Time.now.sec
224
+ return remaining_seconds if remaining_seconds > 30
225
+
226
+ remaining_seconds + 60
227
+ end
228
+
229
+ def initialize_probes
230
+ probes.each do |name, probe|
231
+ initialize_probe(name, probe)
232
+ end
233
+ end
234
+
235
+ def initialize_probe(name, probe)
236
+ if probe.respond_to? :new
237
+ instance = probe.new
238
+ klass = probe
239
+ else
240
+ instance = probe
241
+ klass = instance.class
242
+ end
243
+ unless dependencies_present?(klass)
244
+ Appsignal.internal_logger.debug "Skipping '#{name}' probe, " \
245
+ "#{klass}.dependency_present? returned falsy"
246
+ return
247
+ end
248
+ mutex.synchronize do
249
+ probe_instances[name] = instance
250
+ end
251
+ rescue => error
252
+ logger = Appsignal.internal_logger
253
+ logger.error "Error while initializing minutely probe '#{name}': #{error}"
254
+ logger.debug error.backtrace.join("\n")
255
+ end
256
+
257
+ def uninitialize_probe(name)
258
+ mutex.synchronize do
259
+ probe_instances.delete(name)
260
+ end
261
+ end
262
+
263
+ def dependencies_present?(probe)
264
+ return true unless probe.respond_to? :dependencies_present?
265
+
266
+ probe.dependencies_present?
267
+ end
268
+
269
+ def probe_instances
270
+ @probe_instances ||= {}
271
+ end
272
+ end
5
273
  end
6
274
  end
7
275
 
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Appsignal
4
+ module Utils
5
+ # @api private
6
+ module StdoutAndLoggerMessage
7
+ def self.warning(message, logger = Appsignal.internal_logger)
8
+ Kernel.warn "appsignal WARNING: #{message}"
9
+ logger.warn message
10
+ end
11
+
12
+ def stdout_and_logger_warning(message, logger = Appsignal.internal_logger)
13
+ Appsignal::Utils::StdoutAndLoggerMessage.warning(message, logger)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "appsignal/utils/deprecation_message"
3
+ require "appsignal/utils/stdout_and_logger_message"
4
4
  require "appsignal/utils/data"
5
5
  require "appsignal/utils/hash_sanitizer"
6
6
  require "appsignal/utils/integration_logger"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Appsignal
4
- VERSION = "3.7.0"
4
+ VERSION = "3.7.1"
5
5
  end
data/lib/appsignal.rb CHANGED
@@ -5,7 +5,7 @@ require "securerandom"
5
5
  require "stringio"
6
6
 
7
7
  require "appsignal/logger"
8
- require "appsignal/utils/deprecation_message"
8
+ require "appsignal/utils/stdout_and_logger_message"
9
9
  require "appsignal/helpers/instrumentation"
10
10
  require "appsignal/helpers/metrics"
11
11
 
@@ -120,7 +120,7 @@ module Appsignal
120
120
  Appsignal::Environment.report_enabled("allocation_tracking")
121
121
  end
122
122
 
123
- Appsignal::Minutely.start if config[:enable_minutely_probes]
123
+ Appsignal::Probes.start if config[:enable_minutely_probes]
124
124
 
125
125
  collect_environment_metadata
126
126
  else
@@ -152,6 +152,7 @@ module Appsignal
152
152
  internal_logger.debug("Stopping appsignal")
153
153
  end
154
154
  Appsignal::Extension.stop
155
+ Appsignal::Probes.stop
155
156
  end
156
157
 
157
158
  def forked
@@ -218,7 +219,10 @@ module Appsignal
218
219
  else
219
220
  Appsignal::Config::DEFAULT_LOG_LEVEL
220
221
  end
221
- internal_logger << @in_memory_log.string if @in_memory_log
222
+ return unless @in_memory_log
223
+
224
+ internal_logger << @in_memory_log.string
225
+ @in_memory_log = nil
222
226
  end
223
227
 
224
228
  # Returns if the C-extension was loaded properly.
@@ -287,6 +291,22 @@ module Appsignal
287
291
  end
288
292
  Appsignal::Environment.report_supported_gems
289
293
  end
294
+
295
+ # Alias constants that have moved with a warning message that points to the
296
+ # place to update the reference.
297
+ def const_missing(name)
298
+ case name
299
+ when :Minutely
300
+ callers = caller
301
+ Appsignal::Utils::StdoutAndLoggerMessage.warning \
302
+ "The constant Appsignal::Minutely has been deprecated. " \
303
+ "Please update the constant name to Appsignal::Probes " \
304
+ "in the following file to remove this message.\n#{callers.first}"
305
+ Appsignal::Probes
306
+ else
307
+ super
308
+ end
309
+ end
290
310
  end
291
311
  end
292
312
 
@@ -300,7 +320,6 @@ require "appsignal/event_formatter"
300
320
  require "appsignal/hooks"
301
321
  require "appsignal/probes"
302
322
  require "appsignal/marker"
303
- require "appsignal/minutely"
304
323
  require "appsignal/garbage_collection"
305
324
  require "appsignal/integrations/railtie" if defined?(::Rails)
306
325
  require "appsignal/transaction"
@@ -757,7 +757,10 @@ describe Appsignal::Config do
757
757
  let(:out_stream) { std_stream }
758
758
  let(:output) { out_stream.read }
759
759
  let(:config) { project_fixture_config("production", :log_path => log_path) }
760
- subject { capture_stdout(out_stream) { config.log_file_path } }
760
+
761
+ def log_file_path
762
+ capture_stdout(out_stream) { config.log_file_path }
763
+ end
761
764
 
762
765
  context "when path is writable" do
763
766
  let(:log_path) { File.join(tmp_dir, "writable-path") }
@@ -765,11 +768,11 @@ describe Appsignal::Config do
765
768
  after { FileUtils.rm_rf(log_path) }
766
769
 
767
770
  it "returns log file path" do
768
- expect(subject).to eq File.join(log_path, "appsignal.log")
771
+ expect(log_file_path).to eq File.join(log_path, "appsignal.log")
769
772
  end
770
773
 
771
774
  it "prints no warning" do
772
- subject
775
+ log_file_path
773
776
  expect(output).to be_empty
774
777
  end
775
778
  end
@@ -783,28 +786,47 @@ describe Appsignal::Config do
783
786
  before { FileUtils.chmod(0o777, system_tmp_dir) }
784
787
 
785
788
  it "returns returns the tmp location" do
786
- expect(subject).to eq(File.join(system_tmp_dir, "appsignal.log"))
789
+ expect(log_file_path).to eq(File.join(system_tmp_dir, "appsignal.log"))
787
790
  end
788
791
 
789
792
  it "prints a warning" do
790
- subject
793
+ log_file_path
791
794
  expect(output).to include "appsignal: Unable to log to '#{log_path}'. " \
792
795
  "Logging to '#{system_tmp_dir}' instead."
793
796
  end
797
+
798
+ it "prints a warning once" do
799
+ capture_stdout(out_stream) do
800
+ log_file_path
801
+ log_file_path
802
+ end
803
+ message = "appsignal: Unable to log to '#{log_path}'. " \
804
+ "Logging to '#{system_tmp_dir}' instead."
805
+ expect(output.scan(message).count).to eq(1)
806
+ end
794
807
  end
795
808
 
796
809
  context "when the /tmp fallback path is not writable" do
797
810
  before { FileUtils.chmod(0o555, system_tmp_dir) }
798
811
 
799
812
  it "returns nil" do
800
- expect(subject).to be_nil
813
+ expect(log_file_path).to be_nil
801
814
  end
802
815
 
803
816
  it "prints a warning" do
804
- subject
817
+ log_file_path
805
818
  expect(output).to include "appsignal: Unable to log to '#{log_path}' " \
806
819
  "or the '#{system_tmp_dir}' fallback."
807
820
  end
821
+
822
+ it "prints a warning once" do
823
+ capture_stdout(out_stream) do
824
+ log_file_path
825
+ log_file_path
826
+ end
827
+ message = "appsignal: Unable to log to '#{log_path}' or the '#{system_tmp_dir}' fallback."
828
+ expect(output.scan(message).count).to eq(1)
829
+ end
808
830
  end
809
831
  end
810
832
 
@@ -819,11 +841,11 @@ describe Appsignal::Config do
819
841
 
820
842
  context "when root_path is set" do
821
843
  it "returns returns the project log location" do
822
- expect(subject).to eq File.join(config.root_path, "log/appsignal.log")
844
+ expect(log_file_path).to eq File.join(config.root_path, "log/appsignal.log")
823
845
  end
824
846
 
825
847
  it "prints no warning" do
826
- subject
848
+ log_file_path
827
849
  expect(output).to be_empty
828
850
  end
829
851
  end
@@ -883,7 +905,7 @@ describe Appsignal::Config do
883
905
  end
884
906
 
885
907
  it "returns real path of log path" do
886
- expect(subject).to eq(File.join(real_path, "appsignal.log"))
908
+ expect(log_file_path).to eq(File.join(real_path, "appsignal.log"))
887
909
  end
888
910
  end
889
911
  end
@@ -93,7 +93,7 @@ describe Appsignal::Hooks::GvlHook do
93
93
  it "is added to minutely probes" do
94
94
  Appsignal::Hooks.load_hooks
95
95
 
96
- expect(Appsignal::Minutely.probes[:gvl]).to be Appsignal::Probes::GvlProbe
96
+ expect(Appsignal::Probes.probes[:gvl]).to be Appsignal::Probes::GvlProbe
97
97
  end
98
98
  end
99
99
  end