我正在努力在我的Rails 3应用程序上安装Jammit,然后再部署到Heroku。
我安装了Jammit Gem,并配置好assets.yml,它可以在dev上运行。但是,当我推送到heroku时,文件正在404处理。
Jammit的用法说明说:“您可以在Rakefile和其他脚本中轻松使用Jammit:
require 'jammit'
Jammit.package!
我没有关注这在哪里/如何工作。像在Mac上一样,在我的站点命令中运行Jammit会产生未找到的命令。
有Jammit用户能够帮助我了解如何使用Jammit投入生产吗?
谢谢
最佳答案
我在Heroku的Rails 3.0.7应用程序上使用jammit
gem "jammit", :git => "git://github.com/documentcloud/jammit.git"
我在rake文件中有此文件,以便在我提交/部署之前打包 Assets
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,并具有一些不错的分析和安全功能。
当我开始缓存通用内容时,这东西真的会大叫!