Rod*_*odi 1 elixir phoenix-framework
您是否使用环境变量或prod.secret.exs用于存储密码,API密钥等?经验法则是什么?我觉得它们或多或少都是一样的,因此混淆了使用哪一个。
请注意,我不想通过在代码中合并第三方库来使其复杂化。我最好是开箱即用的解决方案。
如此简单快捷-对于小型混合/ Phoenix项目,我一直使用dev/test/prod.secret.exs文件,然后仅使用获取所需的东西Application.get_env(:key, :value),例如-我的{env}.secret.exs文件可能如下所示:
config :my_app, api_key: "1234567890"
Run Code Online (Sandbox Code Playgroud)
然后在代码中的某处:
def do_stuff do
api_key = Application.get_env(:my_app, :api_key)
end
Run Code Online (Sandbox Code Playgroud)
当然,主配置文件应包含一个导入文件:
import_config "#{Mix.env}.secret.exs"
Run Code Online (Sandbox Code Playgroud)
什么是真正重要的 -不要忘了你的秘密文件添加到.gitignore
对于需要更高安全性的大型项目,我会使用env变量。请检查本指南。
环境变量。
是否是Phoenix / Elixir都无关紧要。
根据一组称为“十二要素应用程序”的最佳做法,
十二因子应用程序将配置存储在环境变量中(通常缩写为env vars或env)。Env var易于在部署之间进行更改,而无需更改任何代码。与配置文件不同,它们很少有可能被意外检入代码存储库;与自定义配置文件或其他配置机制(例如Java系统属性)不同,它们是与语言和操作系统无关的标准。
参考:https : //12factor.net/config