Ruby on rails 如何在git上打开代码并使用正确的配置文件维护部署脚本?

Ruby on rails 如何在git上打开代码并使用正确的配置文件维护部署脚本?,ruby-on-rails,git,open-source,capistrano,Ruby On Rails,Git,Open Source,Capistrano,我在github上开发了一个应用程序。我想把它开源。目前,我们使用capistrano脚本部署到我们的暂存和生产服务器 我试图弄清楚如何将配置文件放在单独的repo中,并且仍然使用capistrano执行一键部署。我们的目标是,我们可以开放回购协议供任何人使用。您有一些选择 使用环境变量:您可以在本地机器和生产机器上设置环境变量。在应用程序中,您可以通过执行以下操作来阅读这些变量:。这样,你就可以将你的应用提交给公共回购,而不用担心暴露密码和密钥等敏感信息。例如,设置一个db_password

我在github上开发了一个应用程序。我想把它开源。目前,我们使用capistrano脚本部署到我们的暂存和生产服务器

我试图弄清楚如何将配置文件放在单独的repo中,并且仍然使用capistrano执行一键部署。我们的目标是,我们可以开放回购协议供任何人使用。

您有一些选择

  • 使用环境变量:您可以在本地机器和生产机器上设置环境变量。在应用程序中,您可以通过执行以下操作来阅读这些变量:
    。这样,你就可以将你的应用提交给公共回购,而不用担心暴露密码和密钥等敏感信息。例如,设置一个db_password环境变量来存储数据库密码,并将其存储在数据库中。yml您可以通过以下操作读取它:
    password:

  • 您可以使用gems link dotenv()或figaro():通过使用这些gems,您不需要在机器上手动设置环境变量,而是在.env文件中定义它们。您可以使用
    以相同的方式阅读它们。您必须忽略.gitignore上的.env文件,并告诉capistrano在生产服务器上创建从.env文件读取的环境变量

  • 另一种选择是为开发和生产生成不同的配置文件,并在.gitignore中忽略它们。您可以将配置生产文件存储在不同的repo中,并在部署时在计算机上进行更新。更新生产服务器上的应用程序repo后,只需将配置文件从本地计算机复制到生产服务器()

最后一个选择是我使用最多的(在我的例子中,我使用ansible代替capistrano)

如果您想看一个示例,我有一个应用程序和一个部署任务当前正在生产中运行,您可以签出:

  • 应用程序:
  • 供应和部署:
希望我说清楚了,你明白了