Lita を Heroku で用いる際にヘルスチェックのエンドポイントを作る(Webサーバ機能を使う)

Lita とは

www.lita.io

結論

まず以下のようなハンドラーを作ります。

module Lita
  module Handlers
    class Healthcheck < Handler
      http.get '/healthcheck' do |_request, response|
        response.body << 'OK'
      end

      Lita.register_handler(self)
    end
  end
end

そして、ハンドラーを require しているファイル(lita-hoge/lib/lita-hoge.rb のようなファイル)内に、このヘルスチェックのハンドラーも以下のように require します。

require 'lita'

Lita.load_locales Dir[File.expand_path(
  File.join('..', '..', 'locales', '*.yml'), __FILE__
)]

require 'lita/handlers/hoge'
require 'lita/handlers/healthcheck'

Lita::Handlers::Hoge.template_root File.expand_path(
  File.join('..', '..', 'templates'),
  __FILE__
)

これで、/healthcheck にアクセスすると OK が返ってきます。UptimeRobot などで死活監視しつつ、サーバを眠らせないために有用だと思います。

一般的なエンドポイントとしても使えるので、Webサーバ の機能を用いることで Bot という観点で広く API を提供することも可能かと思います。

補足

2021/07/25 現在では、Ruby 3 を用いて Webサーバ の機能を用いることはできません。Ruby 3 で削除されたメソッド を用いるため、エラーになるためです。

参考

github.com

Powered by はてなブログ