web-dev-qa-db-fra.com

rails 3.1 actif pipeline css en cours de développement

Je suis un peu confus, car il semble que le fichier application.css s’inclus deux fois, une fois quand il répertorie les ressources du manifeste et un cache de celui-ci. Ainsi, lorsque je supprime un fichier individuel, il semble toujours rester en vie dans le fichier application.css.

application.css (source)

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

Qui fonctionne comme prévu et affiche en mode dev tous les fichiers individuels pertinents

développement.rb

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

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

sortie

<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 (sortie)

Cela devrait être vide? Depuis tout ce que j'ai dans mon fichier application.css est le manifeste et aucun css réel, mais au lieu de cela, je reçois tout mon code concaténé de 106kb de long.

IE si je supprime un fichier du répertoire commun, il ne disparaît pas. Il n'est plus répertorié dans la sortie mais le fichier css apparaît toujours à partir du fichier application.css.

36
holden

J'ai eu un problème comme ça avant. Cela était dû au fait que j'avais précompilé les actifs qu'il était après le fichier applcation.css dans le dossier public ainsi que dans le répertoire apps. Je ne sais pas comment le réparer pour que cela ne se produise plus en mode dev, mais si vous supprimez votre répertoire /public/assets, vous devriez le réparer.

Vérifiez et voyez si vous avez un dossier public/assets, si vous le faites et qu'il est plein, c'est probablement pourquoi vous voyez double.

41
ere

Il y a actuellement (2012-09-24) un bogue dans Rails/Sprockets qui empêche la détection correcte des fichiers importés. 

Ceci devrait être corrigé dans Rails 3.2.9 et versions ultérieures, mais entre-temps, vous pouvez le contourner comme suit:

  1. Tuez l'instance Rails
  2. rm -rf tmp/cache
  3. Démarrer l'instance Rails

Vous devriez maintenant voir le bon css.

37
Peter Hoeg

Vous voudrez peut-être regarder

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

"L'ajout de config.serve_static_assets = false à development.rb empêchera le chargement de fichiers depuis/public/assets"

Cela l'a fait pour moi.

10
Agustin

La solution de @ Agustin le fait pour moi, mais voici quelques choses à faire:

  1. Supprimer tout dans/tmp/cache/assets

  2. Ajoutez config.serve_static_assets = false à development.rb ou test.rb (crédits à @Agustin)

  3. Redémarrez votre serveur.

  4. Assurez-vous que votre application.js/.css n'est pas mis en cache dans votre navigateur. Allez à http://localhost:3000/assets/application.js?body=1 et appuyez sur ctrl + f5 pour forcer l’actualisation (vous pouvez également ajouter un paramètre de randomisation à la fin: http://localhost:3000/assets/application.js?body=1&rnd=12343 Si vous obtenez autre chose et que ctrl + f5 n’a toujours pas aidé, vous devez effacer votre navigateur cache.

Ignorer l'une de ces étapes a renvoyé un application.js/.css en cache en conflit avec mes mises à jour dans des fichiers uniques.

7
Abdo

La meilleure façon, qui a fonctionné pour moi, est de supprimer le contenu du répertoire tmp/cache/* ...

4
Ivan Stana

La chose qui a fonctionné pour nous a été mise 'config.assets.debug = false'

Cela ne définit plus le CSS inclus HTML comme suit: href = "/ assets/bootstrap-new.css? Body = 1", mais plutôt comme href = "/ assets/bootstrap-new.css", ce qui était, je pense, le problème .

3
Maail

J'ai eu le même problème. Malgré la suppression de tmp/cache et de public/assets, minified application.css était toujours mis en cache et servi de quelque part et mes modifications apportées à des fichiers CSS individuels n'étaient pas servies. 

Cela a fonctionné pour moi: Dans application.css, supprimez la ligne *= require_self

redémarrer le serveur

cela semble supprimer le cache et si vous cliquez sur application.css dans la source de votre navigateur, vous ne verrez plus la version réduite

replacer le *= require_self dans le fichier et poursuivre le développement.

1
Homan

Je sais que cette question est ancienne, mais un correctif qui a fonctionné pour moi est que nginx était mandaté par proxy vers mon environnement de développement et que la configuration comportait un bloc location ~ ^/(assets)/. Faites un commentaire ou essayez de redémarrer nginx pour invalider le cache. Si vous développez, vous voudrez probablement simplement le commenter.

J'ai perdu beaucoup trop de temps à résoudre ce problème jusqu'à ce que je m'en souvienne.

0
d_ethier

Une dernière étape était nécessaire pour moi, mais je l’ai réparée. Voici ce que j'ai fait:

  1. arrêter le serveur Rails
  2. actifs de râteau: propre
  3. rake tmp: clair
  4. redémarrer le serveur Rails

Ensuite, j'ai rafraîchi mon écran dans Google Chrome et IL N'A PAS ENCORE DID PAS FONCTIONNÉ Donc, j'ai lancé Firefox et le tour est joué, cela fonctionnait réellement. Cela signifie que Chrome mettait en cache les anciens fichiers dans le navigateur. Alors, j'ai effacé le cache du navigateur dans Chrome, et cela a fonctionné!

0
nfriend21