Capistrano:共享/中文件的版本控制

时间:2011-02-02 18:15:50

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

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