AnA*_*ice 9 ruby-on-rails heroku jammit ruby-on-rails-3
我正在努力在我的Rails 3应用程序上安装Jammit,然后部署到Heroku.
我安装了Jammit Gem,并配置了assets.yml就好了,它适用于dev.但是当我推送到heroku时,文件是404'ing.
Jammit的使用说明说:"你可以在你的Rakefile和其他脚本中轻松使用Jammit:
require 'jammit'
Jammit.package!
Run Code Online (Sandbox Code Playgroud)
我不是在关注它在哪里/如何运作.在我的网站命令中运行Jammit就像在Mac上运行会产生一个找不到的命令.
任何Jammit用户都能帮助我了解如何使用Jammit进入生产阶段?
谢谢
我在Heroku上的Rails 3.0.7应用程序上使用jammit
gem "jammit", :git => "git://github.com/documentcloud/jammit.git"
Run Code Online (Sandbox Code Playgroud)
我在rake文件中有这个,在提交/部署之前打包资产
desc 'jammit'
task :jam => :environment do
require 'jammit'
Jammit.package!
end
Run Code Online (Sandbox Code Playgroud)
这是在.git/hooks/pre-commit中,所以它会自动完成
echo "jamming it"
rake jam
git add public/assets/*
git add public/javascripts/*
Run Code Online (Sandbox Code Playgroud)
默认情况下,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
Run Code Online (Sandbox Code Playgroud)
为了减轻Heroku Rails服务器的负载,我还在CloudFlare上使用免费帐户,该帐户提供轻量级的反向代理/ cdn,具有一些不错的分析和安全功能.
当我开始缓存常见内容时,这件事真的会尖叫!
您可以像我一样,使用 jammit force 打包您的资产,将所有内容上传到 s3 并在 Rails 中定义资产主机。这样做的另一个好处是可以让您的 slug 更小、响应更快,因为您可以将公共目录添加到 .slugignore 。
或者,由于只读文件系统,您需要弄清楚如何使 heroku 版本正常工作。
归档时间: |
|
查看次数: |
4200 次 |
最近记录: |