Sha256: c906d938a5528a867e36c56f49c9438cc56bcf20a1e510af4aa89d744665b4c6

Contents?: true

Size: 1001 Bytes

Versions: 63

Compression:

Stored size: 1001 Bytes

Contents

module Appsignal
  class Hooks
    class UnicornHook < Appsignal::Hooks::Hook
      register :unicorn

      def dependencies_present?
        defined?(::Unicorn::HttpServer) &&
          defined?(::Unicorn::Worker)
      end

      def install
        # Make sure that appsignal is started and the last transaction
        # in a worker gets flushed.
        #
        # We'd love to be able to hook this into Unicorn in a less
        # intrusive way, but this is the best we can do given the
        # options we have.

        ::Unicorn::HttpServer.class_eval do
          alias worker_loop_without_appsignal worker_loop

          def worker_loop(worker)
            Appsignal.forked
            worker_loop_without_appsignal(worker)
          end
        end

        ::Unicorn::Worker.class_eval do
          alias close_without_appsignal close

          def close
            Appsignal.stop('unicorn')
            close_without_appsignal
          end
        end
      end
    end
  end
end

Version data entries

63 entries across 63 versions & 1 rubygems

Version Path
appsignal-1.1.5.beta.4 lib/appsignal/hooks/unicorn.rb
appsignal-1.1.5.beta.3 lib/appsignal/hooks/unicorn.rb
appsignal-1.1.5.beta.2 lib/appsignal/hooks/unicorn.rb