Packages

An Elixir plug returns a service unavailable response during maintenance.

Current section

Files

Jump to
plug_maintenance lib plugs maintenance.ex
Raw

lib/plugs/maintenance.ex

defmodule Maintenance do
@default_monitor {PlugMaintenance.Monitor, :check, []}
@default_renderer {PlugMaintenance.View.Maintenance, :render, []}
def init(opts), do: opts
def call(conn, opts) do
{module, fun, args} = opts[:monitor] || @default_monitor
cond do
apply(module, fun, [conn, args]) -> service_unavailable(conn, opts)
true -> conn
end
end
defp service_unavailable(conn, opts) do
{module, fun, args} = opts[:renderer] || @default_renderer
apply(module, fun, [conn, args])
end
end