我正在努力在我的Rails3应用上安装Jammit,然后部署到Heroku。
我安装了Jammit Gem,并很好地配置了assets.yml,它可以在开发环境下工作。但是当我推到heroku的时候,文件已经是404了。
Jammit的使用说明说:“您可以很容易地在Rakefile和其他脚本中使用Jammit:
require 'jammit'
Jammit.package!我不明白它在哪里工作/如何工作。在我的站点中运行Jammit命令,就像在Mac上一样,会产生一个命令not found。
有没有Jammit用户能够帮助我理解如何使用Jammit迁移到生产环境?
谢谢
发布于 2011-12-09 00:58:06
我在Heroku上的Rails 3.0.7应用程序上使用jammit
gem "jammit", :git => "git://github.com/documentcloud/jammit.git"我将其放在rake文件中,以便在提交/部署之前打包资产。
desc 'jammit'
task :jam => :environment do
require 'jammit'
Jammit.package!
end这在.git/hooks/pre-commit中,因此它是自动完成的
echo "jamming it"
rake jam
git add public/assets/*
git add public/javascripts/*默认情况下,Heroku上的过期时间只有12小时,为了增加它(因为我有一个我很有信心的缓存破坏方案),我把它放在config/initializers/heroku.rb中
module Heroku
class StaticAssetsMiddleware
def cache_static_asset(reply)
return reply unless can_cache?(reply)
status, headers, response = reply
headers["Expires"] = CGI.rfc1123_date(11.months.from_now)
build_new_reply(status, headers, response)
end
end
end为了减少我的Heroku Rails服务器上的负载,我还在CloudFlare上使用了一个免费帐户,它提供了一个轻量级的反向代理/cdn,具有一些不错的分析和安全功能。
当我开始缓存常见的内容时,这个东西真的要尖叫了!
发布于 2010-12-11 04:28:50
您可以像我一样,使用jammit force打包您的资产,将所有内容上传到s3,并在rails中定义资产主机。这还有一个额外的好处,那就是使您的插件更小,响应更快,因为您可以将公共目录添加到.slugignore。
或者,您需要研究如何使heroku版本工作,因为它是只读的文件系统。
发布于 2011-07-02 03:22:25
您还可以使用git预提交钩子来确保您的资产在推送到heroku (或任何服务器)之前都已打包。有关示例,请参阅https://gist.github.com/862102。您可以将该文件复制到项目目录中的.git/hooks/pre-commit。
https://stackoverflow.com/questions/4404545
复制相似问题