2010-12-10 26 views
9

Estoy trabajando para instalar la aplicación Jammit on my Rails 3 y luego implementarla en Heroku.Rails + Heroku + Jammit

Instalé la joya de Jammit y configuré assets.yml muy bien, funciona en dev. Pero cuando presioné heroku, los archivos estaban 404'ing.

instrucciones de uso del Jammit dicen: "Usted puede utilizar fácilmente Jammit dentro de su Rakefile, y otras secuencias de comandos:

require 'jammit' 
Jammit.package! 

no estoy siguiendo dónde/cómo funciona Correr Jammit en mis sitios de comando como en el. Mac rendimientos no encontró un comando.

Cualquier usuario Jammit capaces de ayudar a entender cómo mover a la producción con Jammit?

Gracias

Respuesta

3

Podría, como lo hago, usar la fuerza de jammit para empacar sus activos, cargar todo en s3 y definir un host de activos en rieles. Esto tiene la ventaja adicional de mantener su babosa más pequeña y más receptiva ya que puede agregar su directorio público a .slugignore.

Como alternativa, tendrá que averiguar cómo hacer que la versión heroku funcione debido al sistema de archivos de solo lectura.

+1

¿Tiene sus activos fuera de S3? ¿Por qué?No es un CDN, podría verlo con CloudFront, pero tengo curiosidad por saber por qué S3. – AnApprentice

2

También puede usar un gancho de precompilación de git para garantizar que sus activos estén empaquetados antes de enviarlos a heroku (o a cualquier servidor). Ver https://gist.github.com/862102 para un ejemplo. Puede copiar ese archivo a .git/hooks/pre-commit en su directorio de proyecto.

6

estoy usando Jammit en una aplicación Rails 3.0.7, en Heroku

gem "jammit", :git => "git://github.com/documentcloud/jammit.git" 

tengo esto en un archivo de rastrillo, para empaquetar los activos antes de comprometerme/desplegar

desc 'jammit' 
    task :jam => :environment do 
    require 'jammit' 
    Jammit.package! 
end 

Y esto en .git/ganchos/pre-commit por lo que se realiza de forma automática

echo "jamming it" 
rake jam 
git add public/assets/* 
git add public/javascripts/* 

Por defecto, el tiempo expira en Heroku fue sólo 12 horas, de aumentarla (porque tengo un esquema de almacenamiento en memoria caché que estoy seguro de) Pongo esto en config/inicializadores/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 

Para disminuir la carga en mi servidor Heroku Rails, también estoy usando una cuenta gratuita en CloudFlare que proporciona un proxy/cdn inverso liviano, con algunas características analíticas y de seguridad decentes.

Cuando llego al caché de contenido común, ¡esta cosa realmente va a gritar!

Cuestiones relacionadas