首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails + Heroku + Jammit

Rails + Heroku + Jammit
EN

Stack Overflow用户
提问于 2010-12-10 08:25:20
回答 5查看 4.2K关注 0票数 9

我正在努力在我的Rails3应用上安装Jammit,然后部署到Heroku。

我安装了Jammit Gem,并很好地配置了assets.yml,它可以在开发环境下工作。但是当我推到heroku的时候,文件已经是404了。

Jammit的使用说明说:“您可以很容易地在Rakefile和其他脚本中使用Jammit:

代码语言:javascript
复制
require 'jammit'
Jammit.package!

我不明白它在哪里工作/如何工作。在我的站点中运行Jammit命令,就像在Mac上一样,会产生一个命令not found。

有没有Jammit用户能够帮助我理解如何使用Jammit迁移到生产环境?

谢谢

EN

回答 5

Stack Overflow用户

发布于 2011-12-09 00:58:06

我在Heroku上的Rails 3.0.7应用程序上使用jammit

代码语言:javascript
复制
gem "jammit", :git => "git://github.com/documentcloud/jammit.git"

我将其放在rake文件中,以便在提交/部署之前打包资产。

代码语言:javascript
复制
desc 'jammit'
  task :jam  => :environment do
  require 'jammit'
  Jammit.package!
end

这在.git/hooks/pre-commit中,因此它是自动完成的

代码语言:javascript
复制
echo "jamming it"
rake jam
git add public/assets/*
git add public/javascripts/*

默认情况下,Heroku上的过期时间只有12小时,为了增加它(因为我有一个我很有信心的缓存破坏方案),我把它放在config/initializers/heroku.rb中

代码语言:javascript
复制
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,具有一些不错的分析和安全功能。

当我开始缓存常见的内容时,这个东西真的要尖叫了!

票数 6
EN

Stack Overflow用户

发布于 2010-12-11 04:28:50

您可以像我一样,使用jammit force打包您的资产,将所有内容上传到s3,并在rails中定义资产主机。这还有一个额外的好处,那就是使您的插件更小,响应更快,因为您可以将公共目录添加到.slugignore。

或者,您需要研究如何使heroku版本工作,因为它是只读的文件系统。

票数 3
EN

Stack Overflow用户

发布于 2011-07-02 03:22:25

您还可以使用git预提交钩子来确保您的资产在推送到heroku (或任何服务器)之前都已打包。有关示例,请参阅https://gist.github.com/862102。您可以将该文件复制到项目目录中的.git/hooks/pre-commit。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4404545

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档