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

Ruby on rails Capistrano:共享中文件的版本控制/,ruby-on-rails,version-control,capistrano,shared,release-management,Ruby On Rails,Version Control,Capistrano,Shared,Release Management,当Capistrano部署Rails应用程序时,它会创建一个shared/目录来存储文件,这些文件应该在各个版本之间共享,而不是每次都重新导出。在我的应用程序中,shared/目录中有一些内容很少更改(因此它们属于那里,而不是应用程序树中),但我仍然希望它们在发生更改时进行版本控制 控制这些文件的版本,但将它们与Capistrano导出的存储库分开的最佳方法是什么?共享目录实际上用于未版本化的数据。例如,您可以存储绑定的gems,这样您就不必在每个版本中重新安装所有gems。您还可以将日志存储在

当Capistrano部署Rails应用程序时,它会创建一个
shared/
目录来存储文件,这些文件应该在各个版本之间共享,而不是每次都重新导出。在我的应用程序中,
shared/
目录中有一些内容很少更改(因此它们属于那里,而不是应用程序树中),但我仍然希望它们在发生更改时进行版本控制


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

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


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

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


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

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

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

这很有意义。我将把需要更改的文件移到源代码树中。谢谢这是有道理的。我将把需要更改的文件移到源代码树中。谢谢