2011-11-16 11 views
36

Estoy un poco confundido ya que parece que la aplicación.css se incluye a sí misma dos veces, una cuando enumera los recursos del manifiesto y luego un caché de eso. Entonces, cuando elimino un archivo individual, parece que sigue vivo dentro del archivo application.css.raíles 3.1 canalización de activos css caching en desarrollo

application.css (fuente)

/* 
*= require twitter/bootstrap 
*= require_self 
*= require_tree ./common 
*= require_tree ./helpers 
*/ 

que funciona como se esperaba y salidas en el modo dev todos los ficheros relevantes individuales

development.rb

# Do not compress assets 
    config.assets.compress = false 

    # Expands the lines which load the assets 
    config.assets.debug = true 

salida

<link href="/assets/twitter/bootstrap.css?body=1" media="screen" rel="stylesheet" type="text/css" /> 
<link href="/assets/application.css?body=1" media="screen" rel="stylesheet" type="text/css" /> 
<link href="/assets/common/announcement.css?body=1" media="screen" rel="stylesheet" type="text/css" /> 
<link href="/assets/common/button.css?body=1" media="screen" rel="stylesheet" type="text/css" /> 
<Blah blah> 

application.css (salida)

Esto debería estar en blanco? Como todo lo que tengo en mi archivo application.css es el manifiesto y no el CSS real, sino que obtengo todo mi código concatenado de 106kb de longitud.

IE si elimino un archivo en el directorio común, no desaparece. Ya no aparece en la salida, pero el css sigue apareciendo desde el application.css

+2

Tengo exactamente el mismo problema tanto con css como con js .. no puedo resolverlo. Las "respuestas" a continuación no abordan el problema. Solo estoy trabajando en el modo dev ahora. ¿Cómo desactivar la concatonación y la minificación? Hace que mis complementos de jquery se ejecuten dos veces, el CSS se duplica. – dsaronin

+2

En config/environments/development.rb, si configuro config.assets.debug = false, las cargas dobles no se producirán porque las etiquetas adicionales javascript/stylesheet no se están generando. No sé si los cambios, sin embargo, se realizan dinámicamente a los archivos consolidados. – dsaronin

+2

¿alguna vez encontró una solución a este @holden? Tengo los mismos problemas y estoy tratando desesperadamente de resolverlo. – Josh

Respuesta

42

que tenía un problema como esto antes. Fue causado después de haber precompilado los activos que iba después de applcation.css dentro de la carpeta pública y en el directorio de aplicaciones. No estoy seguro de cómo solucionarlo para que no siga sucediendo mientras está en modo dev, pero si elimina su directorio /public/assets, debería arreglarlo.

Compruebe y vea si tiene una carpeta public/assets, si lo hace y está llena, es probable que sea por eso que está viendo el doble.

+2

¿cómo se supone que debo ocultar los activos en la carpeta pública entre impulsar los cambios en la producción y luego volver al desarrollo? ¿Puedo eliminarlo de mi camino en dev de alguna manera? – holden

+4

Eliminé mi 'application.js' y' application.css' pero dejé las versiones dactiloscópicas. Parece que está funcionando para mí. – ZMorek

+0

Eliminar mi application.css y apllication.css.gz corrigió el problema. Gracias. –

-5

Los activos hacer mejor su trabajo cuando se ejecuta la aplicación en el entorno de producción, entonces tendrás carga sólo el application.css con todos los archivos incluido y comprimido, para reducir la solicitud del servidor y esta application.css con los estilos comprimidos se almacenará en caché.

http://guides.rubyonrails.org/asset_pipeline.html

10

Es posible que desee ver en

https://stackoverflow.com/a/7854902/686460

"Adición config.serve_static_assets = false a development.rb evitará que la carga de archivos desde/público/activos"

que lo hizo para mí.

+0

Esto no funcionó para mí, lamentablemente, todavía se está publicando una versión comprimida de application.js directamente de/public/assets –

+0

Vaya, lo siento @Agustin, esta solución funcionó. Sin embargo, todos los activos que no formaban parte de la cartera de activos ya no se sirven (como favicon.ico y fuentes). Parece que tendré que encontrar una solución para esos activos. –

+0

Esta respuesta sugiere otro enfoque: asignar una carpeta de activos ficticios para el entorno de desarrollo. http://stackoverflow.com/a/11587288/550712 –

7

@ solución de Agustín lo hace por mí, pero aquí hay algunas cosas que hay que hacer:

  1. Eliminar todo en/tmp/cache/activos

  2. Añadir config.serve_static_assets = false a development.rb o test.rb (créditos a @Agustin)

  3. Reinicia tu servidor.

  4. Asegúrate de que la aplicación.js/.css no esté en la memoria caché de tu navegador.Vaya a http://localhost:3000/assets/application.js?body=1 y presione ctrl + f5 para forzar la actualización (también puede intentar agregar anexando un parámetro de aleatorizador al final: http://localhost:3000/assets/application.js?body=1&rnd=12343 Si obtiene algo más y ctrl + f5 aún no ha ayudado, debe borrar la caché de su navegador.

Saltarse cualquiera de estos pasos volvieron a application.js caché/css entrar en conflicto con mis actualizaciones en archivos individuales.

+0

dios esto es molesto ... no hay suerte aquí todavía –

+0

¿hay algo almacenado en caché en público? inspecciona la página y asegúrate de que application.css no se publique dos veces (o contenga código) ... Sé cómo te sientes, es muy molesto. – Abdo

37

en la actualidad (2012-09-24) un error en los carriles/ruedas dentadas que causan para no detectar correctamente los archivos importados.

Esto se debe fijar en los carriles 3.2.9 y más tarde, pero en la media hora, se puede trabajar alrededor de ella de la siguiente manera:

  1. Mata a la instancia rieles
  2. rm-rf tmp/cache
  3. iniciar la instancia de rieles

Usted debe ahora estar viendo el CSS correcto

+1

Peter, ¿pueden proporcionar un enlace a este error? –

+0

solo quería señalar que esto era exactamente lo que tenía que hacer. limpiar el caché después de configurar el interruptor en development.rb hizo el truco – FireDragon

+0

Tenía raíles funcionando mientras hacía cambios de gemas, lo que llevó a 'twitter-bootstrap-rails' a tener css obsoletos. Destruyó la carpeta, todo arreglado. Gracias. – ZMorek

4

La mejor manera, que trabajó para mí es borrar el contenido de tmp/cache/ * directorio ...

1

que tenía el mismo problema. A pesar de borrar tmp/cache y public/assets, la application.css minificada aún se almacenaba en caché y se enviaba desde algún lugar, y mis cambios en los archivos css individuales no se estaban publicando.

Esto funcionó para mí: en application.css quitar la línea *= require_self

servidor reinicio

que parece eliminar la caché y si hace clic en application.css en su fuente de navegador que ya no lo hará vea la versión reducida

reemplace *= require_self de nuevo en el archivo y continúe desarrollando.

3

Lo que funcionó para nosotros estaba poniendo 'config.assets.debug = false'

Esto ya no se establece el código HTML incluido CSS como href = "/ activos/bootstrap-new.css? Corporal = 1" , en su lugar configúrelo como href = "/ assets/bootstrap-new.css", que creo que fue el problema.

0

Hubo un último paso requerido para mí, pero lo solucioné. Esto es lo que hice:

  1. apagar el servidor rieles
  2. activos rastrillo: limpio
  3. rake tmp: claro
  4. reiniciar el servidor rieles

entonces, recrearon mi pantalla Google Chrome, y TODAVÍA NO FUNCIONÓ. Entonces, lancé Firefox y listo, en realidad estaba funcionando. Esto significa que Chrome estaba almacenando en caché los archivos antiguos dentro del navegador. Entonces, eliminé el caché del navegador en Chrome y ¡funcionó!

0

Sé que esta es una vieja pregunta, pero una solución que funcionó para mí es que tenía proxying nginx para mi entorno de desarrollo y tenía un bloque location ~ ^/(assets)/ en la configuración. Coméntelo o intente reiniciar nginx para invalidar la caché. Si está desarrollando, probablemente solo quiera comentarlo por completo.

Perdí demasiado tiempo solucionando este problema hasta que lo recordé.

Cuestiones relacionadas