rails 3.1 asset pipeline css caching w rozwoju

Jestem trochę zdezorientowany, ponieważ wydaje się, że aplikacja.css włącza się dwa razy, raz, gdy wymienia zasoby z manifestu, a następnie pamięć podręczną tego. Więc kiedy usuwam pojedynczy plik, wydaje się, że nadal żyje wewnątrz aplikacji.plik css.

Zastosowanie.css (source)

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

Który działa zgodnie z oczekiwaniami i wyprowadza w trybie dev wszystkie odpowiednie jednostki pliki

Rozwój.rb

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

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

Wyjście

<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>

Zastosowanie.css (output)

To powinno być puste? Od tego, co mam w aplikacji.plik css jest manifestem i nie ma faktycznego css, ale zamiast tego dostaję cały mój skonkatenowany Kod o długości 106kb.

IE jeśli usunę plik ze wspólnego katalogu, nie zniknie. Nie jest już wymieniony w wyjściu, ale css nadal jest wyświetlany z aplikacji.css

Author: holden, 2011-11-16

10 answers

Miałem już taki problem. To było spowodowane po tym, jak wstępnie skompilowałem aktywa, które szły po aplkacji.css wewnątrz folderu publicznego oraz w katalogu apps. Nie jestem pewien, jak to naprawić, aby nie działo się w trybie dev, ale jeśli usuniesz swój katalog /public/assets, powinien to naprawić.

Sprawdź i sprawdź, czy masz folder public/assets, jeśli masz i jest pełny, prawdopodobnie dlatego widzisz podwójnie.

 41
Author: ere,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-17 09:32:18

Obecnie (2012-09-24) występuje błąd w rails/sprockets powodujący, że nie wykrywa poprawnie importowanych plików.

Powinno to być naprawione w rails 3.2.9 i późniejszych, ale w międzyczasie możesz obejść to w następujący sposób:

  1. Zabij instancję rails
  2. rm-rf tmp / cache
  3. Uruchom instancję rails

Powinieneś teraz widzieć poprawny css.

 37
Author: Peter Hoeg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-24 05:27:21

You might want to look at

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

" dodawanie config.serve_static_assets = false to development.rb uniemożliwi wczytywanie plików z /public/assets "

To mi pomogło.

 10
Author: Agustin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:10

@Agustin rozwiązanie robi to za mnie, ale oto kilka rzeczy, które musisz zrobić:

  1. Usuń wszystko w /tmp / cache / assets

  2. Add config.serve_static_assets = false to development.rb lub test.rb (credits to @Agustin)

  3. Uruchom ponownie serwer.

  4. Upewnij się, że aplikacja.js / css nie jest buforowany w przeglądarce. Przejdź do http://localhost:3000/assets/application.js?body=1 i naciśnij ctrl + f5, aby wymusić odświeżanie (możesz również spróbować dodać dodanie param randomizera na końcu: http://localhost:3000/assets/application.js?body=1&rnd=12343 Jeśli coś dostaniesz else i ctrl + f5 nadal nie pomogło, musisz wyczyścić pamięć podręczną przeglądarki.

Pominięcie któregokolwiek z tych kroków zwróciło buforowaną aplikację.js / css sprzeczne z moimi aktualizacjami w pojedynczych plikach.

 7
Author: Abdo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-16 15:07:39

Najlepszym sposobem, który zadziałał dla mnie, jest usunięcie zawartości TMP/cache/*...

 4
Author: Ivan Stana,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-20 12:16:44

Rzecz, która działała dla nas, to ustawienie ' config.aktywa.debug = false '

To nie ustawia już HTML CSS jako href= " / assets / bootstrap-new.css?body= 1", zamiast tego ustaw go jako href=" / assets / bootstrap-new.css", co moim zdaniem było problemem.

 3
Author: Maail,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-06 06:55:14

Miałem ten sam problem. Pomimo wyczyszczenia tmp/cache i public / assets minifikowana aplikacja.css nadal był buforowany i serwowany skądś, a moje zmiany w poszczególnych plikach css nie były serwowane.

To zadziałało na mnie: w aplikacji.css usuń linię *= require_self

Restart serwera

To wydaje się usuwać pamięć podręczną i po kliknięciu na aplikacji.css w źródle przeglądarki nie będzie już widoczna wersja minified

Zastąp *= require_self wstecz do pliku i kontynuować rozwój.

 1
Author: Homan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-11-08 00:49:31

Był dla mnie ostatni krok, ale go naprawiłem. Oto co zrobiłem:

  1. Wyłącz serwer rails
  2. aktywa grabie:czyste
  3. rake tmp: clear
  4. restart serwera rails

Następnie odświeżyłem Ekran w Google Chrome, i nadal nie działa. Więc, uruchomiłem Firefoksa i voila, to faktycznie działa. Oznacza to, że Chrome buforował stare pliki w przeglądarce. Więc wyczyściłem pamięć podręczną przeglądarki w Chrome i zadziałało!

 0
Author: nfriend21,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-27 12:51:43

Wiem, że to stare pytanie, ale jedna poprawka, która zadziałała dla mnie, to to, że miałem proxy nginx do mojego środowiska programistycznego i miał location ~ ^/(assets)/ blok w konfiguracji. Możesz to skomentować lub spróbować ponownie uruchomić nginx, aby unieważnić pamięć podręczną. Jeśli rozwijasz, prawdopodobnie będziesz chciał skomentować to całkowicie.

Straciłem zbyt wiele czasu na rozwiązywanie tego, dopóki nie przypomniałem sobie o tym.

 0
Author: d_ethier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-27 01:38:28

Zasoby wykonują swoją pracę lepiej, gdy uruchomisz aplikację w środowisku produkcyjnym, wtedy będziesz musiał załadować tylko aplikację.css ze wszystkimi plikami dołączonymi i skompresowanymi, aby zmniejszyć żądanie serwera i tej aplikacji.css ze skompresowanymi stylami będzie buforowany.

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

 -5
Author: Mr_Nizzle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-11-17 03:31:08