2011-09-26 53 views
16

在rails 3.1中,当您预编译资产时,rails会创建public/assets目录并在其中添加文件。您是否在版本控制中添加了公共/资产?

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

+1

你觉得你的问题得到了答案吗?如果是这样,请接受,否则评论你错过了什么会有帮助。 – Travis

回答

5

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

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

这里是相关部门的报价(强调):

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

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

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

有三个注意事项:

  • 你不能运行预编译的资产Capistrano的部署任务。
  • 您必须确保开发系统上有任何必需的压缩机或缩小器。
  • 您必须更改下面的应用配置设置:

config/environments/development.rb,请将下面一行:

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

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

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

因此,将预编译资产置于VCS中似乎是个好主意。

12

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

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

编译资产,.gz文件解/等检查,只会扰乱版本控制。

+0

在我的Amazon EC2微型实例上,需要花费10分钟才能运行'rake assets:precompile'。所以部署至少需要10分钟。在我的开发箱上,不到一分钟。考虑到这一点,你认为版本控制编译资产是否合理? –

+0

在[Railscast第#341集](http://railscasts.com/episodes/341-asset-pipeline-in-production)结尾处,Ryan Bates提到了在本地机器上编译资产然后修改capistrano部署任务以将文件rsync同步到生产服务器;即不把它们放在版本控制中。听起来不错。 –

+1

提醒一下:编译资产后,您的开发环境可能会选择直接提供这些资源,而不是根据需要生成它们。对我来说,一个快速解决方案是在完成上述cap资产:预编译和rsync任务后删除'/ public/assets'。 –

相关问题