Sha256: f8ca11774ab8d99de0ea89696e82dd0666b34cb7d8d3cefe439f74d5c6a7f227

Contents?: true

Size: 1.25 KB

Versions: 17

Compression:

Stored size: 1.25 KB

Contents

# frozen-string-literal: true

#
class Roda
  module RodaPlugins
    # The heartbeat handles heartbeat/status requests.  If a request for
    # the heartbeat path comes in, a 200 response with a
    # text/plain Content-Type and a body of "OK" will be returned.
    # The default heartbeat path is "/heartbeat", so to use that:
    #
    #   plugin :heartbeat
    #
    # You can also specify a custom heartbeat path:
    #
    #   plugin :heartbeat, :path=>'/status'
    module Heartbeat
      OPTS = {}.freeze
      PATH_INFO = 'PATH_INFO'.freeze
      HEARTBEAT_RESPONSE = [200, {'Content-Type'=>'text/plain'}.freeze, ['OK'.freeze].freeze].freeze

      # Set the heartbeat path to the given path.
      def self.configure(app, opts=OPTS)
        app.opts[:heartbeat_path] = (opts[:path] || app.opts[:heartbeat_path] || "/heartbeat").dup.freeze
      end

      module InstanceMethods
        # If the request is for a heartbeat path, return the heartbeat response.
        def call
          if env[PATH_INFO] == opts[:heartbeat_path]
            response = HEARTBEAT_RESPONSE.dup
            response[1] = Hash[response[1]]
            response
          else
            super
          end
        end
      end
    end

    register_plugin(:heartbeat, Heartbeat)
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
roda-2.27.0 lib/roda/plugins/heartbeat.rb
roda-2.26.0 lib/roda/plugins/heartbeat.rb
roda-2.25.0 lib/roda/plugins/heartbeat.rb
roda-2.24.0 lib/roda/plugins/heartbeat.rb
roda-2.23.0 lib/roda/plugins/heartbeat.rb
roda-2.22.0 lib/roda/plugins/heartbeat.rb
roda-2.21.0 lib/roda/plugins/heartbeat.rb
roda-2.20.0 lib/roda/plugins/heartbeat.rb
roda-2.19.0 lib/roda/plugins/heartbeat.rb
roda-2.18.0 lib/roda/plugins/heartbeat.rb
roda-2.17.0 lib/roda/plugins/heartbeat.rb
roda-2.16.0 lib/roda/plugins/heartbeat.rb
roda-2.15.0 lib/roda/plugins/heartbeat.rb
roda-2.14.0 lib/roda/plugins/heartbeat.rb
roda-2.13.0 lib/roda/plugins/heartbeat.rb
roda-2.12.0 lib/roda/plugins/heartbeat.rb
roda-2.11.0 lib/roda/plugins/heartbeat.rb