Forum: Rails-ES stylesheet_link_tag, javascript_include_tag con :cache=>true

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
3bad218882602f4c35ea15adb3e5d5a4?d=identicon&s=25 Fernando Calatayud (fernan2)
on 2009-05-11 21:39
Se me ha ocurrido probar a meter el :cache => true en los
stylesheet_link_tag y javascript_include_tag
http://api.rubyonrails.org/classes/ActionView/Help...

Y fijaos lo que me ha pasado:

- En localhost-desarrollo no hace nada (correcto, porque
ActionController::Base.perform_caching es false para development)

- En localhost-producción, el YSlow reporta una mejora apreciable:
Estupendo, lo voy a pasar a producción!!

- En explotación-producción, no se cargan los css ni los javascripts.
Problema: no existen los archivos /stylesheets/all.css y
/javascripts/all.js . Miro en mi máquina y sí que están (yo no los he
creado, los ha metido Rails); los subo al servidor, y todo OK.

¿Alguien sabe cómo se crean y por qué lo ha hecho bien en mi máquina y
no en el servidor? ¿Puede ser un tema de permisos? Y lo principal: cómo
lo arreglo? Porque vistos los resultados, me interesa mantenerlo...

s2
1f2eadfb41362800ebc2cf211b91d0f7?d=identicon&s=25 javier ramirez (Guest)
on 2009-05-11 21:58
(Received via mailing list)
Hola,

> ¿Alguien sabe cómo se crean y por qué lo ha hecho bien en mi máquina y
> no en el servidor? ¿Puede ser un tema de permisos? Y lo principal: cómo
> lo arreglo? Porque vistos los resultados, me interesa mantenerlo...
>

En principio ese fichero se crea al arrancar el servidor. Supongo que al
subir la versión nueva has reiniciado, pero si no lo hubieras hecho, tu
mongrel/passenger/loquesea no se habría generado automáticamente. Como
indicas que el cambio en el layout sí lo ha aplicado, entiendo que has
reiniciado y es probable que sea efectivamente un tema de permisos.

Independientemente, quería aprovechar el mail para comentar un pequeño
"patrón" que yo uso para estos ficheros de caché. En lugar de poner
:cache=>true prefiero especificar un nombre de fichero, y de hecho
prefiero ponerle un nombre de directorio+fichero

por ejemplo

<%= javascript_include_tag :defaults, 'builder.js', 'portal.js',
'clear-default-text.js', :cache=>'cache/support_js' -%>

por qué? Porque rails crea el fichero al arrancar *solamente* si no
existía ya. Si ya existe, no lo regenera. Esto significa que si haces un
cambio en tu máquina, tienes que preocuparte de borrar a mano los
ficheros de caché para que vuelva a generarse, y a veces acaba siendo un
poco tedioso, especialmente si tienes diferentes grupos de ficheros y
utilizas diferentes ficheros de caché.

este efecto en la máquina de producción no suele verse porque si usas
capistrano lo normal es que hagas un checkout cada vez, con lo que las
hojas de estilo/javascripts cacheados no existen y se regeneran cada
vez.

al utilizar un directorio, puedes directamente borrar ese directorio
entero cada vez que vayas a rearrancar en producción, sin tener que
preocuparte de que se vaya a borrar nada que necesites. De paso puedes
añadir ese directorio al ignore de tu control de versiones, para que no
ande molestando cada vez que compruebas el estado de la copia local.

un pequeño paso para la humanidad, pero a mí me vale :)

saludos,

j

--
javier ramírez

..i do ruby on rails development in madrid, spain, at
http://www.aspgems.com
..you can find out more about me on http://formatinternet.wordpress.com
and http://workingwithrails.com/person/5987-javier-ramirez
3bad218882602f4c35ea15adb3e5d5a4?d=identicon&s=25 Fernando Calatayud (fernan2)
on 2009-05-12 09:54
javier ramirez wrote:

> En principio ese fichero se crea al arrancar el servidor. Supongo que al
> subir la versión nueva has reiniciado, pero si no lo hubieras hecho, tu
> mongrel/passenger/loquesea no se habría generado automáticamente. Como
> indicas que el cambio en el layout sí lo ha aplicado, entiendo que has
> reiniciado y es probable que sea efectivamente un tema de permisos.
>
> Independientemente, quería aprovechar el mail para comentar un pequeño
> "patrón" que yo uso para estos ficheros de caché. En lugar de poner
> :cache=>true prefiero especificar un nombre de fichero, y de hecho
> prefiero ponerle un nombre de directorio+fichero
>
> por ejemplo
>
> <%= javascript_include_tag :defaults, 'builder.js', 'portal.js',
> 'clear-default-text.js', :cache=>'cache/support_js' -%>
>
> por qué? Porque rails crea el fichero al arrancar *solamente* si no
> existía ya. Si ya existe, no lo regenera. Esto significa que si haces un
> cambio en tu máquina, tienes que preocuparte de borrar a mano los
> ficheros de caché para que vuelva a generarse, y a veces acaba siendo un
> poco tedioso, especialmente si tienes diferentes grupos de ficheros y
> utilizas diferentes ficheros de caché.
>
> este efecto en la máquina de producción no suele verse porque si usas
> capistrano lo normal es que hagas un checkout cada vez, con lo que las
> hojas de estilo/javascripts cacheados no existen y se regeneran cada
> vez.
>
> al utilizar un directorio, puedes directamente borrar ese directorio
> entero cada vez que vayas a rearrancar en producción, sin tener que
> preocuparte de que se vaya a borrar nada que necesites. De paso puedes
> añadir ese directorio al ignore de tu control de versiones, para que no
> ande molestando cada vez que compruebas el estado de la copia local.
>
> un pequeño paso para la humanidad, pero a mí me vale :)

Pues efectivamente sí que había reiniciado mi Apache + Passenger, así
que debería haber creado los archivos; ya somos dos en pensar que es muy
probable que sea cuestión de permisos. Pero me parece que tu idea es muy
buena, así que voy a ponerla en práctica, en vez de pelearme con los
permisos (yo tb uso Capistrano).

s2 y muchas gracias!!
This topic is locked and can not be replied to.