Sha256: a7383e8c1394052c2c1a5a4c670a460f5fd26231e86d91d4f24d3e50c122ee79

Contents?: true

Size: 1001 Bytes

Versions: 5

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

5 entries across 5 versions & 1 rubygems

Version Path
appsignal-2.1.2 lib/appsignal/hooks/unicorn.rb
appsignal-2.1.1 lib/appsignal/hooks/unicorn.rb
appsignal-2.1.1.beta.1 lib/appsignal/hooks/unicorn.rb
appsignal-2.1.0 lib/appsignal/hooks/unicorn.rb
appsignal-2.1.0.beta.1 lib/appsignal/hooks/unicorn.rb