我试图通过设置环境变量来正确保护我的应用程序。我正在用figaro gem做这件事。我没有使用heroku,只是我自己设置的vps。
现在开发的所有工作都很好并且有意义。 application.yml包含不再在database.yml上的硬编码数据库密码。 application.yml不会在存储库上推送,密码也不会被共享。都好。
但我很难在生产中理解它。如果我使用环境变量在database.yml上设置生产部分,然后application.yml不在生产中运行的服务器上,它怎么可能工作?或者,如果我将它们设置在另一个文件上,然后将其推送到存储库,我只是将带有密码的密码从文件移动到另一个文件,并且仍然可以访问。或者环境变量应该只用于测试和开发?
有人能给我一个明确的解释吗?我一直在阅读其他问题和文章,但我无法理解它。
您想在生产中设置Unix环境变量。查看this guide,其中说明:
config / application.yml文件中的变量将覆盖Unix shell中设置的环境变量。
换句话说,在开发中,您可以在application.yml
中设置这些变量,然后覆盖Unix中设置的任何值。在生产中,您可以在shell中设置它们,这是值的来源。我建议做一些关于环境变量的更一般的阅读,因为它们是应用程序开发的基础部分。