Я не знаю, почему это так (я думал, что все заглушки до того, как ошибка будет применена, но я воспроизвел вашу ситуацию). Тем не менее, вы можете поместить все заглушки в модуль и назвать его самостоятельно. Помните, что вы должны делать как можно меньше в обратном вызове handle_errors
, потому что одна из заглушек может быть причиной ошибки.
defmodule ApplySomePlug do
use Plug.Builder
plug(CORSPlug)
plug(:put_custom_header)
def put_custom_header(conn, _) do
Plug.Conn.put_resp_header(conn, "foo", "bar")
end
end
и использовать его
def handle_errors(conn, _) do
opts = ApplySomePlug.init(nil)
conn = ApplySomePlug.call(conn, opts)
Phoenix.Controller.json(conn, %{error: "something bad happened"})
end