凤凰在哪里defimpl Plug.Exception

Jos*_*itt 3 elixir phoenix-framework

我正试图在凤凰城扩展现有的例外.

我从文档中看到过这样做:

defimpl Plug.Exception, for: Ecto.NotSingleResult do
  def status(_exception), do: 404
end
Run Code Online (Sandbox Code Playgroud)

但这又往哪里了?

另外,我有两个管道,一个用于:浏览器,一个用于:api是否可以在一个管道而不是另一个管道中扩展?

wha*_*ide 8

你可以把defimplPlug.Exception任何你想要的协议,只要该文件是在被混合装载(例如,文件libweb).例如,您可以lib/my_app/plug_exception_implementations.ex使用此内容创建:

defimpl Plug.Exception, for: Ecto.NotSingleResult do
  def status(_exception), do: 404
end

# other `defimpl Plug.Exception`s here if needed
Run Code Online (Sandbox Code Playgroud)

一旦为数据类型定义协议的实现,它就是全局的,因此将为两个管道定义它.