【问题标题】:Rails + Heroku + JammitRails + Heroku + Jammit
【发布时间】:2011-05-23 05:13:07
【问题描述】:

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

我安装了 Jammit Gem,并配置了 assets.yml,它可以在 dev 上运行。但是当我推送到 heroku 时,文件是 404 的。

Jammit 的使用说明说:“您可以在 Rakefile 和其他脚本中轻松使用 Jammit:

require 'jammit'
Jammit.package!

我没有关注它在哪里/如何工作。像在 Mac 上一样在我的站点命令中运行 Jammit 会产生一个未找到的命令。

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

谢谢

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 heroku jammit


    【解决方案1】:

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

    当我开始缓存公共内容时,这东西真的会尖叫!

    【讨论】:

      【解决方案2】:

      您可以像我一样使用 jammit force 打包您的资产,将所有内容上传到 s3 并在 rails 中定义资产主机。这具有使您的 slug 更小且响应更快的额外优势,因为您可以将公共目录添加到 .slugignore 。

      或者,由于只读文件系统,您需要弄清楚如何使 heroku 版本工作。

      【讨论】:

      • 您将资产托管在 S3 之外?为什么?它不是 CDN,我可以看到使用 CloudFront 这样做,但很好奇为什么是 S3。
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        【讨论】:

          【解决方案5】:

          Heroku 具有只读文件系统,因此 Jammit 无法实际存储压缩和缩小的 CSS/JS 文件。

          这里有一篇关于heroku资产打包挑战的非常好的文章:http://jimmycuadra.com/posts/the-challenge-of-asset-packaging-on-heroku

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2011-09-03
            • 1970-01-01
            • 2011-08-04
            • 1970-01-01
            • 2014-07-15
            • 1970-01-01
            • 1970-01-01
            • 2011-10-31
            相关资源
            最近更新 更多