65 votes

Confusion à propos de rake assets:clean / cleanup sur le pipeline d'actifs dans rails

Quelqu'un pourrait-il m'expliquer ce que la commande rake assets:clean le fait vraiment ? Malheureusement, les guides Rails ne le mentionnent pas. Il existe également la commande rake assets:cleanup . Quelle est la différence ?

De plus, quelqu'un pourrait-il me dire quand je dois courir rake assets:precompile en production. Dois-je l'exécuter sur la console du serveur après avoir déployé tous mes fichiers d'application sur mon serveur de production ? Ou dois-je precompile sur ma machine locale et ensuite faire un déploiement de tous les fichiers ?

Merci à tous

68voto

Sergio Tulentsev Points 82783

Note : Cette réponse est spécifique aux rails 3. Pour les rails 4 et suivants, consultez les autres réponses ici.

Si vous précompilez sur votre machine locale, vous pouvez alors livrer ces ressources générées dans le référentiel et procéder au déploiement. Il n'est pas nécessaire de les compiler sur la machine de production.

Mais cela introduit un problème : maintenant, lorsque vous modifiez les fichiers sources (coffescript / scss), l'application ne prendra pas en compte les changements, car elle servira les fichiers précompilés à la place. rake assets:clean supprime ces fichiers précompilés.

Dans mes projets, les actifs sont précompilés dans le cadre du déploiement. Capistrano rend cela très facile.

Aussi, je n'ai jamais entendu parler de rake assets:cleanup .

62voto

fahim Points 11

Ejecutar rake assets:clobber pour nettoyer réellement les actifs. http://www.dixis.com/?p=735

32voto

grouchomc Points 444

La réponse de Sergio était tout à fait correcte dans Rails 3. rake assets:clean a supprimé tous les actifs qui avaient été précédemment précompilés dans la public/assets répertoire.

Dans Rails 4, vous exécutez rake assets:clobber pour faire la même chose.

Si vous exécutez rake assets:precompile avec la configuration suivante (activée par défaut dans les environnements de stockage et de production) :

# config/environments/production.rb
config.assets.digest = true

Les actifs compilés sont horodatés. Cela signifie que vous pouvez compiler vos nouvelles ressources tout en laissant les anciennes ressources en place. Vous voulez généralement faire cela en production afin que votre site web puisse toujours accéder aux anciens fichiers pendant que vous exécutez le programme. precompile pour créer vos nouveaux fichiers (parce que vous avez ajouté de nouveaux css/javascript). Vous voulez maintenant vous débarrasser des anciens fichiers qui ne sont plus utilisés. Le site clean il supprime les anciennes versions des actifs précompilés tout en laissant les nouveaux actifs en place.

8voto

paul.belt Points 129

rake assets:clean supprime les actifs compilés. Il est exécuté par cap deploy:assets:clean pour supprimer les actifs compilés, généralement à partir d'un serveur distant.

cap deploy:clean supprime les anciennes versions, généralement à partir d'un serveur distant. Il ne s'agit pas rake assets:clean

rake != cap

0voto

magg Points 41

rake assets:clean est désormais dirigé par cap deploy:cleanup_assets . Ajouter require 'capistrano/rails/assets' à votre Capfile et vous obtenez ce cap-task. Ma version de capistrano est v3.2.1.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X