Hallo Michael,

insgesamt ist es einfach schade, dass man in Stylesheets keine Asset- helper benutzen kann ;). Wir hatten das "Problem", dass wir auch in Stylesheets verlinkte Hintergrund-Bilder gerne mit einem Cache-Buster- Query-String versehen wollten, um sie besser Browser-seitig cachen zu können. Da wir Sass benutzt haben, haben wir einfach in einem zentralen Sass-File die Variable !timestamp gesetzt und die dann von Hand überall in die URLs geschrieben:

background-image: url('/images/sone_image.png?#{!timestamp}')

Dadurch hatten zwar alle Assets den gleichen Timestamp, aber wir konnte a) sicher gehen, dass nach dem Deploy auch alle Assets neu geladen werden und konnten b) die Browser-seitige expiration auf unendlich setzen.

Ähnlich könntest Du's mit den Pfaden auch machen (Du benutzt doch Sass, oder? :-) ):

background-image: url('#{!root_url}/images/sone_image.png')

Blöde Handarbeit halt.


Grüße, Niko.

Am 17.05.2010 um 19:45 schrieb Michael Schuerig:
Ich bin heute beim Deployment einer Testanwendung auf ein paar
Schwierigkeiten gestoßen, die ich bisher nicht hatte. Eigentlich wollte
ich die App unter /demo haben und ich wollte außerdem "Caching" von
JavaScript- und CSS-Dateien verwenden. Potenziell sollen gleichzeitig
mehrere, unabhängige Apps unter /demo1, /demo2 usw. installiert werden.

Anscheinend (nicht ausprobiert) könnte ich dem Routing mitteilen, dass
die Anwendung nicht unter /, sondern /demo liegt

# config/environment.rb oder config/environments/production.rb
config.action_controller.relative_url_root = "/demo"

Damit würden immerhin die generierten Pfade stimmen. Das sind aber nicht
alle. Weitere Pfade gibt es vor allem in Stylesheets als Verweise auf
Hintergrundbilder. Solche Pfade sind entweder absolut, dann
berücksichtigen sie das Unterverzeichnis nicht. Oder sie sind relativ,
dann funktionieren sie nicht mehr, wenn Stylesheets aus
unterschiedlichen Verzeichnisebenen per

stylesheet_link_tag ..., :cache => true

zu einem Stylesheet zusammengefasst werden.

Dass Stylesheets nicht nur direkt in public/stylesheets liegen ist
ziemlich typisch, wenn man gestylte JavaScript-Komponenten verwendet.

Ein wirklich schöne Lösung ist mir noch nicht eingefallen. Im Augenblick
ist meine Idee, beim Deployment in den Stylesheets alle URLs durch
solche mit absoluten Pfaden auszutauschen und dabei einen evtl. Präfix
für das Unterverzeichnis zu berücksichtigen.

Macht das jemand? Gibt's schon ein Skript dafür? Oder gibt es einen
anderen, besseren Weg? Auf Rewrite-Regeln des Webservers würde ich dabei gerne verzichten. Nicht zuletzt, weil sie Passenger zusätzliche Arbeit
abverlangen.

Michael

--
Michael Schuerig
mailto:mich...@schuerig.de
http://www.schuerig.de/michael/
_______________________________________________
rubyonrails-ug mailing list
rubyonrails-ug@headflash.com
http://mailman.headflash.com/listinfo/rubyonrails-ug

_______________________________________________
rubyonrails-ug mailing list
rubyonrails-ug@headflash.com
http://mailman.headflash.com/listinfo/rubyonrails-ug

Antwort per Email an