在rails 3.1中,当您预编译资产时,rails会创建public / assets目录并在那里添加文件。
你是版本控制公共/资产/ *?
答案 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可能是个好主意。