docbrown/app/controllers/api/v0/health_checks_controller.rb
Alex 393ba00221
Remove Elasticsearch ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ ✂️ (#13606)
* Attempt number 1

* Fix rack_attack specs

* Fix users_searches_users spec

* Fix display_users_search_spec

* Fix comment typo

* Remove search:destroy task from cypress

* Remove port 9300 from gitpod

* Stub response in attack_spec
2021-05-03 11:09:45 -04:00

50 lines
1.2 KiB
Ruby

module Api
module V0
class HealthChecksController < ApiController
before_action :authenticate_with_token
def app
render json: { message: "App is up!" }, status: :ok
end
def database
if ActiveRecord::Base.connected?
render json: { message: "Database connected" }, status: :ok
else
render json: { message: "Database NOT connected!" }, status: :internal_server_error
end
end
def cache
if all_cache_instances_connected?
render json: { message: "Redis connected" }, status: :ok
else
render json: { message: "Redis NOT connected!" }, status: :internal_server_error
end
end
private
def authenticate_with_token
return if request.local?
key = request.headers["health-check-token"]
return if key == SiteConfig.health_check_token
error_unauthorized
end
def all_cache_instances_connected?
[
ENV["REDIS_URL"],
ENV["REDIS_SESSIONS_URL"],
ENV["REDIS_SIDEKIQ_URL"],
ENV["REDIS_RPUSH_URL"],
].compact.all? do |url|
Redis.new(url: url).ping == "PONG"
end
end
end
end
end