2012-05-29 13 views
7

Sé que Heroku se está ejecutando los activos del rastrillo: tarea de precompilación:/Ruby-on-Rails error: imagen no precompilar

-----> Writing config/database.yml to read from DATABASE_URL 
-----> Preparing app for Rails asset pipeline 
     Running: rake assets:precompile 
-----> Rails plugin injection 
     Injecting rails_log_stdout 
     Injecting rails3_serve_static_assets 
-----> Discovering process types 
     Procfile declares types  -> (none) 
     Default types for Ruby/Rails -> console, rake, web, worker 
-----> Compiled slug size is 17.7MB 
-----> Launching... done 

Y me dijeron que precompilar imágenes en production.rb

# from: http://stackoverflow.com/questions/8052865/rails-3-1-asset-pipeline-why-my-images-do-not-precompile-for-production 
config.assets.precompile += %w[*.png *.jpg *.jpeg *.gif] 

Entonces, ¿por qué aún este error 500?

2012-05-29T02:57:15+00:00 app[web.1]: Started GET "/signin" for 46.114.68.16 at 2012-05-29 02:57:15 +0000 
2012-05-29T02:57:15+00:00 app[web.1]: Processing by SessionsController#new as HTML 
2012-05-29T02:57:15+00:00 app[web.1]: Rendered sessions/new.html.erb within layouts/application (25.4ms) 
2012-05-29T02:57:15+00:00 app[web.1]: Completed 500 Internal Server Error in 27ms 
2012-05-29T02:57:15+00:00 app[web.1]: 
2012-05-29T02:57:15+00:00 app[web.1]: ActionView::Template::Error (twitter_64.png isn't precompiled): 
2012-05-29T02:57:15+00:00 app[web.1]:  25: <div id="auths"> 
2012-05-29T02:57:15+00:00 app[web.1]:  27: <a href="/auth/twitter" class="provider"> 
2012-05-29T02:57:15+00:00 app[web.1]:  26: <h2>Or sign in through one of these:</h2> 
2012-05-29T02:57:15+00:00 app[web.1]:  28:  <%= image_tag "twitter_64.png", :size => "64x64", :alt => "Twitter" %>Twitter</a> 

Curiosamente, tengo imágenes en otras páginas que muestran muy bien. No sé por qué algunas imágenes no funcionarían, pero algunos se ...

+0

¿Estás seguro de que 'twitter_64.png' está en el directorio de activos (' app/assets/images', 'lib/assets/..' o' vendor/assets..')? – luacassus

+0

¿Por qué querrías precompilar imágenes? – ksol

Respuesta

7

En primer lugar, asegúrese de que tiene este conjunto, así:

config.assets.initialize_on_precompile = false 

Si eso no funciona, vale la pena probar ejecutar manualmente la tarea de precompilación antes de compilar el slug; Creo que hay sutiles diferencias cuando se hace de esta manera:

RAILS_ENV=production bundle exec rake assets:precompile 

pasado, no es una solución, pero si todo lo demás falla, una solución temporal sería establecer

config.assets.compile = true 
+0

Gracias por esto, ejecutando 'RAILS_ENV = product bundle exec rake assets: precompile' antes de empujar funcionó para mí. – Jason

1

Asegúrese de que usted está poniendo sus imágenes en

app/assets/images 

y no en

public/assets 

directamente.

Luego ejecuta y verifica si mejora. Puede ser un poco confuso.

+0

esto copia las imágenes en el directorio público. ¿Eliminas las imágenes del directorio de la aplicación/activos/imágenes una vez que se han agregado al directorio público? También tiene problemas con la forma de referenciar los archivos. ¿Debo usar su nombre normal o el nombre stars-xxxx.jpg? – flobacca

+1

1) No tiene que usar los nombres raros que obtienen del sistema Rails, solo sus nombres normales. Si están en una subcarpeta, solo den su ruta relativa, de lo contrario ni siquiera eso. Sabe que hacer 2) No, no elimine el directorio de la aplicación/activos/imágenes cuando se hayan copiado. – mjnissim

Cuestiones relacionadas