* 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
50 lines
1.2 KiB
Ruby
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
|