2011-10-04 8 views
8

No puedo obtener la precompilación de la tubería de activos de Rails 3.1 para trabajar en modo de producción. Es siempre falla en las imágenes referenciadas dentro SCSS con un error como:Ruby on Rails 3.1 activos: precompilación e imágenes

$ bundle exec rake assets:precompile RAILS_ENV=production 
    rake aborted! 
    rails.png isn't precompiled 
    (in /home/florian/AssetTest/app/assets/stylesheets/application.css.scss) 

Pero cuando miro en el directorio público/activos, la imagen está ahí, por lo que se precompila:

$ ls public/assets | grep rails 
    rails-dd352fc2630e5f9aa5685ef1d7fe5997.png 

El SCSS archivo en este caso solo contiene un poco de código de prueba:

/* 
* This is a manifest file that'll automatically include all the stylesheets available in this directory 
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at 
* the top of the compiled file, but it's generally better to create a new file per style scope. 
*= require_self 
*= require_tree . 
*/ 

body { 
    background: #ffffff image-url('rails.png') no-repeat 0 center; 
} 

Si yo no uso el ayudante de imagen-url en SCSS, pero sólo url ('/ activos/rails.png'), la compilación previa funciona bien, y un archivo manifest.yml es g enerado en público/activos.

Lo interesante es: si cambio el SCSS a image-url ('rails.png') y ejecuto otra precompilación, todavía funciona (supongo que porque la imagen ya está listada en el archivo de manifiesto).

¿Qué estoy haciendo mal aquí? Realmente no quiero ignorar los métodos de ayuda (ya que usarlos es La manera en que debes hacerlo, ¿no?), Y definitivamente no quiero crear el archivo de manifiesto manualmente ...

Respuesta

5

Tengo se encuentra con el mismo problema yo mismo. Esto es al parecer un error en Rails 3.1.0, y se espera que se fija en el corto plazo ...

En cualquier caso, en production.rb, puede intentar esto:

config.assets.compile = true 

Es posible que tenga que establece a false, que es debe ser. Sin embargo, tenerlo configurado en false causa problemas cuando usa activos auxiliares en SCSS cuando intenta hacerlo. Establecer ese valor en true parece permitir adecuadamente la compilación mientras se usan esos helpers.

Eche un vistazo a this issue on github para algunos detalles.

+1

Acaba de actualizar a Rails 3.1.1rc1 como se sugiere en el problema github, y funciona :-) – fwalch

+2

Esta respuesta parece mala por este motivo: http://stackoverflow.com/questions/8821864/config-assets-compile- true-in-rails-production-why-not – Ringo

Cuestiones relacionadas