2016-06-09 6 views
0

Ich habe erstellt, was ich für ein schönes Layout für einen Kalender hielt. Ich habe es mit einem Capistrano-Rezept inszeniert und das Styling sah wie eine Katastrophe aus. Ich dachte, vielleicht ist der Einsatz falsch gelaufen. Ich inspizierte den Aufstellungsort und bemerkte, dass es eine Grenze um eine td gab, während meine Entwicklung es nicht hatte. Gab es dafür eine css-Erklärung?Warum werden Entwicklungsressourcen zwischengespeichert?

$ grep -rnw "$MYSITE/current/app/assets/stylesheets" -e ".fc td" 
$ tail -n 1000 $MYSITE/current/app/assets/stylesheets/fullcalendar_engine/fullcalendar.css | grep -B10 -A10 ".fc td" 
.fc th, 
.fc td { 
    border-style: solid; 
    border-width: 1px; 
    padding: 0; 
    vertical-align: top; 
} 

Ja. Tatsächlich habe ich es auch auf meinem lokalen Rechner:

.fc th, 
.fc td { 
    border-style: solid; 
    border-width: 1px; 
    padding: 0; 
    vertical-align: top; 
} 

Also dann ging der Einsatz nicht schief. In meiner lokalen Umgebung trat ein gewisses Caching-Verhalten auf. Ich lief das folgende örtlich:

rake assets:clean assets:clobber assets:precompile tmp:clear 

Und danach sah mein Einheimischer jetzt wie die Inszenierung aus. Ich verstehe nicht, warum meine lokalen Assets zwischengespeichert wurden. Sie sollten bei jeder Seitenladung aktualisiert werden. In development.rb habe ich kein Caches:

config.cache_classes = false 
config.action_controller.perform_caching = false 

Die erste sicher, dass jeder Rubin macht Klasse für jede Anfrage neu geladen (Rubin Belastung mit nicht erforderlich ist), macht die zweite sicher kein Fragment-Caching gibt. Zwar hat weder etwas mit einem Vermögen zu tun, aber die einzige Linie in development.rb ich für Vermögenswerte sehen, ist diese Zeile:

config.assets.raise_runtime_errors = true 

Bin ich etwas in der Entwicklung fehlt? Normalerweise, wenn ich css-Änderungen mache und die Seite aktualisiere, werden die Änderungen aktualisiert, aber dieses Mal nicht. Gibt es eine spezifische Konfiguration, die ich an development.rb übergeben kann, um festzustellen, dass die CSS für jede Anfrage immer neu geladen wird?

Antwort

0

Vielleicht haben Sie rake assets:precompile auf Ihrem Entwicklungscomputer ausgeführt?

Das verursacht Probleme, weil assets:precompile Assets generiert und in public/assets platziert. Diese statischen Dateien haben jetzt Vorrang vor den dynamischen Assets, die im laufenden Betrieb kompiliert werden. Sie können also in eine Situation kommen, in der keine Änderungen an den Browser gesendet werden.

Kurze Antwort: Stellen Sie sicher, dass Sie das Verzeichnis public/assets in Ihrer Entwicklungsumgebung vollständig gelöscht haben. Und niemals rake assets:precompile in Entwicklung ausführen.

+0

Ich habe Assets ausgeführt: Vorkompilierung auf meinem lokalen Computer, weil, wenn ich im Staging bereitgestellt, und meine Capistrano Rezept läuft Assets: Precompile für Staging, meine Staging-Site und lokale Site sah völlig anders aus. Ich musste Assets ausführen: Vorkompilieren auf meinem lokalen Computer, so dass es wie eine Staging-Datei aussehen würde. Wie sollte ich sonst die Inszenierung wie meine lokale Kopie aussehen lassen? – Donato

+0

Ich meinte, Sie könnten (unbeabsichtigt?) "Assets: precompile" auf Ihrem lokalen Rechner * vor der Bereitstellung auf dem Staging ausführen. Womit Ihre lokalen Vermögenswerte "hängen geblieben" wären. Entfernen Sie den Inhalt Ihres lokalen 'public/assets'-Verzeichnisses und führen Sie von diesem Punkt an nie' assets: precompile' lokal aus, und Sie sollten alle gut sein. –

+0

Stellen Sie sich Folgendes vor: "Assets: Vorkompilieren" "friert" Ihre Assets an dem Punkt ein, an dem Sie sie ausführen. Alle Änderungen, die Sie nach diesem Punkt vornehmen, werden nicht angezeigt. Die Lösung besteht nicht darin, 'Assets: Precompile' erneut auszuführen; Die Lösung besteht darin, sie nie auszuführen, weil Sie Ihre Entwicklungsumgebung niemals "einfrieren" möchten. –