我正在努力在我的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,并具有一些不错的分析和安全功能。

当我开始缓存通用内容时,这东西真的会大叫!

10-06 09:22