【问题标题】:Capistrano: Version control for files in shared/Capistrano:共享/中文件的版本控制
【发布时间】:2011-02-02 18:15:49
【问题描述】:

当 Capistrano 部署 Rails 应用程序时,它会创建一个 shared/ 目录来存储应该跨版本共享而不是每次都重新导出的文件。在我的应用程序中,shared/ 目录中有几样东西很少更改(因此它们属于那里而不是应用程序树中),但我仍然希望它们在它们 执行时受到版本控制 改变。

对这些文件进行版本控制但将它们与 Capistrano 导出的存储库分开的最佳方法是什么?

【问题讨论】:

    标签: ruby-on-rails version-control capistrano shared release-management


    【解决方案1】:

    /shared 目录真正用于存放未版本化的数据。例如,您可以存储捆绑的 gem,这样您就不必在每次发布时都重新安装所有 gem。您还可以将日志存储在那里,这样它们就不会在您每次部署时被覆盖。您可以将 pid 文件存储在那里,这样您就不会在部署期间丢失关键进程的进程 ID。您甚至可以将用户生成或部分处理的数据存储在那里,以便在发布期间不会将其删除。如果一个文件需要进行版本控制并且有可能更改,我建议将其与您的其余文件一起保存在共享目录之外。

    也就是说,您也可以随时编写部署脚本来预填充共享目录中的数据,例如数据库配置文件。这些脚本将在每次部署时运行,并且可以完全自定义。例如,您的数据库配置脚本可能只在配置文件不存在时才编写它。

    【讨论】:

    • 这是有道理的。我会将需要更改的文件移动到源代码树中。谢谢!
    【解决方案2】:

    共享目录的另一个常见用途是用于配置文件。配置文件的版本控制和源代码控制是一个非常好的主意,但应该在系统配置管理工具中进行管理。在我的环境中,我使用 Capistrano 管理代码发布,使用 Puppet 管理系统配置。这样,仍然存在对配置文件的源代码控制,但它们与代码部署过程不同。反过来,代码部署过程独立于系统配置。

    【讨论】:

      猜你喜欢
      • 2011-05-08
      • 2019-04-28
      • 1970-01-01
      • 1970-01-01
      • 2011-01-28
      • 2016-09-26
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      相关资源
      最近更新 更多