如何在控制器中僅在生產環境中插入模塊?如何在生產環境中僅在控制器中插入模塊?
例子:
plug BasicAuth, realm: "Admin Area", username: "admin", password: "pass"
如何在控制器中僅在生產環境中插入模塊?如何在生產環境中僅在控制器中插入模塊?
例子:
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
此行不會編譯任何東西(nil
)如果Mix.env
不生產。
雖然@ whatyouhide的回答是正確的,但在混合任務之外請注意在項目中使用Mix.env
。如果您決定使用Exrm或relx來構建OTP版本,則混合庫將不會包含在內,這會在啓動時崩潰您的應用程序。
作爲一種替代方案,您可以將:env
密鑰添加到每個環境的相應配置文件中,並將env值包含在其中,然後像使用Mix.env
一樣使用它。
爲了擴展這一點,您甚至可以使用特定於該特徵的密鑰而不是環境。例如有一個':true'或'false'值的':admin_auth'鍵。這樣,該功能與您的環境無關,使開發中的功能更加容易,從而確保其功能。 – Gazler
@ Gazler的建議很棒。更明確的永遠不會回來咬你。但是,不那麼明確可以。 –