你在版本控制中添加公共/资产吗?

时间:2011-09-26 20:40:30

标签: ruby-on-rails asset-pipeline

在rails 3.1中,当您预编译资产时,rails会创建public / assets目录并在那里添加文件。

你是版本控制公共/资产/ *?

2 个答案:

答案 0 :(得分:12)

我使用Capistrano进行部署。最后一步是编译资产。没有这样的东西被检入版本控制。

https://github.com/capistrano/capistrano/wiki/Documentation-v2.x

检入已编译的资产,.gz文件/等,只会使版本控制混乱。

答案 1 :(得分:5)

我也在寻找答案。我发现官方的Rails指南对此有一些想法:

http://guides.rubyonrails.org/asset_pipeline.html#local-precompilation

以下是相关部分的引用(重点补充):

  

您可能希望在本地预编译资产有几个原因。其中包括:

     
      
  • 您可能没有对生产文件系统的写入权限。
  •   
  • 您可能正在部署到多台服务器,并希望避免重复工作。
  •   
  • 您可能正在进行不包含资产更改的频繁部署。
  •   
     

本地编译允许您将已编译的文件提交到源代码管理中,并正常部署。

     

有三点需要注意:

     
      
  • 您不得运行预编译资产的Capistrano部署任务。
  •   
  • 您必须确保开发系统上有任何必要的压缩机或缩放器。
  •   
  • 您必须更改以下应用程序配置设置:
  •   
     

config/environments/development.rb中,放置以下行:

config.assets.prefix = "/dev-assets"
     

prefix更改使Sprockets在开发模式下使用不同的URL来提供资产,并将所有请求传递给Sprockets。生产环境中的前缀仍设置为/assets。如果没有此更改,应用程序将在开发中为/assets的预编译资产提供服务,在再次编译资产之前,您不会看到任何本地更改。

     

实际上,这将允许您在本地进行预编译,在工作树中包含这些文件,并在需要时将这些文件提交到源代码控制。开发模式将按预期工作。

因此,有时候将预编译资产放入VCS可能是个好主意。