如何仅在生产环境中将模块插入控制器?

How to plug module in controller only in production env?

如何仅在生产环境中将模块插入控制器?

示例:

plug BasicAuth, realm: "Admin Area", username: "admin", password: "pass"

您可以利用 Mix 的环境。您可以有选择地仅在生产环境中添加 plug 调用,如下所示:

if Mix.env == :prod do
  plug BasicAuth, realm: "Admin Area", username: "admin", password: "pass"
end

如果 Mix.env 不是生产环境,这一行将不会编译成任何东西 (nil)。

虽然@whatyouhide 的回答是正确的,但在混合任务之外的项目中使用 Mix.env 时要小心。如果您决定使用 Exrm 或 relx 来构建 OTP 版本,则不会包含混合库,这会导致您的应用程序在启动时崩溃。

作为替代方案,您可以向每个环境的相应配置文件添加一个 :env 密钥,其中包含 env 值,然后像 Mix.env.

一样使用它