Class: Appsignal::Hooks::PumaHook

Inherits:
Hook
  • Object
show all
Defined in:
lib/appsignal/hooks/puma.rb

Instance Method Summary collapse

Methods inherited from Hook

#installed?, register, #try_to_install

Instance Method Details

#dependencies_present?Boolean

Returns:

  • (Boolean)

6
7
8
9
10
# File 'lib/appsignal/hooks/puma.rb', line 6

def dependencies_present?
  defined?(::Puma) &&
    ::Puma.respond_to?(:cli_config) &&
    ::Puma.cli_config
end

#installObject


12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/appsignal/hooks/puma.rb', line 12

def install
  ::Puma.cli_config.options[:before_worker_boot] ||= []
  ::Puma.cli_config.options[:before_worker_boot] << Proc.new do |id|
    Appsignal.forked
  end

  ::Puma.cli_config.options[:before_worker_shutdown] ||= []
  ::Puma.cli_config.options[:before_worker_shutdown] << Proc.new do |id|
    Appsignal.stop('puma before_worker_shutdown')
  end

  ::Puma::Cluster.class_eval do
    alias stop_workers_without_appsignal stop_workers

    def stop_workers
      Appsignal.stop('puma cluster')
      stop_workers_without_appsignal
    end
  end
end