在Heroku上组合和缩小JS / CSS的最佳方法

时间:2009-12-11 18:04:03

标签: ruby-on-rails heroku minify asset-management

首先,根据this answer:cache => truestylesheet_link_tag上的javascript_include_tag选项不适用于Heroku。这是真的?我发现:cache => true偶尔会工作,但并不总是(很奇怪!)

此外,这里最好的解决方案是什么?理想情况下,它可以无缝地组合和缩小所有CSS / JS。 Heroku Asset Packager声称这样做 - 有更好的选择吗?

8 个答案:

答案 0 :(得分:23)

我在Heroku上使用Jammit。效果很好。您可以在本地构建您的资产并登记到heroku。使用

jammit --force

当前版本0.5.1在heroku上有问题但你可以从git安装修复版本://github.com/documentcloud/jammit.git

如果您使用的是Rails 3,请在捆绑包Gemfile中指定以下内容:

gem "jammit", :git => "git://github.com/documentcloud/jammit.git"

对于Rails 2。*

config.gem "jammit", :source => "git://github.com/documentcloud/jammit.git"

祝你好运。

答案 1 :(得分:8)

我发现在这种情况下添加一个git预提交钩子来编译和打包资产,然后将它们添加到当前提交就派上用场了。

使用Jammit看起来像这样(在.git/hooks/pre-commit中):

jammit
rake barista:brew
git add public/assets/*
git add public/javascripts/*

像这样,您的所有资产都将为您打包,您不必再担心它了。

答案 2 :(得分:4)

GitHub对此有一个很好的答案,我相信你可以修改Heroku的部署脚本进行集成:

http://github.com/blog/551-optimizing-asset-bundling-and-serving-with-rails

答案 3 :(得分:3)

我还没有在heroku上尝试过,但是Sprockets可能对此有好处。此外,在过去,我有更多的运气

:cache => 'all.css'
:cache => 'all.js'

而不是'true'

答案 4 :(得分:1)

这是管理CSS / Javascript的另一种方式,但您可能想查看Rails插件shoebox

Shoebox可以进行组合,缩小和缓存。

答案 5 :(得分:0)

项目名称说明了一切:

http://github.com/amasses/heroku_asset_packager

答案 6 :(得分:0)

以下是压缩资产的配置选项。

http://guides.rubyonrails.org/asset_pipeline.html#customizing-the-pipeline

config.assets.css_compressor = :yui
config.assets.js_compressor = :uglifier
config.assets.compress = true


gem 'uglifier'
gem 'yui-compressor'

答案 7 :(得分:0)

可能有多种方法可以做到这一点,但对我有用的是在推动前缩小。然后我使用子树将我的构建文件与“源”文件分开。因此,例如,如果你构建一个名为“dist”的文件夹,你可以像这样推送到一个名为heroku / master的子树:

git subtree push --prefix dist heroku master

请不要忘记确保不会忽略dist文件夹(默认情况下通常是这样) - 因此请相应地编辑.gitignore文件。

--prefix命令确保dist文件夹从该分支的角度有效地成为“根”文件夹。