Question

Précompilation actifs sur le serveur de production est très lent. J'ai donc décidé de les recompiler sur la machine de développement et télécharger des actifs à l'Amazon S3 par jammit. Tout est fait, mais j'ai quelques problèmes négatifs:

  1. Je dois inclure le répertoire de public/assets au contrôle de git. Parce que si le répertoire de public/assets est vide sur le serveur de production échoue
  2. Si je PreCompile actifs sur la machine de développement application.js inclut dans le code HTML comme comprimé et de cette façon que je l'ai dupliqué code js. La modification js ne fait pas d'effet parce que précompilés interruptions de application.js ce code.

De cette façon, mon processus de développement comprend les étapes suivantes:

  1. Supprimer actifs précompilés si je vais js modifier ou css
  2. Faites quelques modifications
  3. actifs PreCompile
  4. actifs à S3 Télécharger par jammit-s3
  5. N'engager et pousser mes changements, y compris les actifs sur le serveur git
  6. Déploiement par Capistrano

Mes questions sont les suivantes:

  1. Est-il possible de configurer l'environnement de développement ne comprennent pas application.js comprimé si je l'ai dans le répertoire public/assets?
  2. Est-il possible de configurer l'environnement de production pour le travail avec le répertoire vide public/assets? Les actifs ne seront sur le serveur S3.
Était-ce utile?

La solution 2

Je résolu ce problème en incluant les actifs dir dans gitignore et exclure un seul fichier - public/assets/manifest.yml et le serveur de production fonctionne correctement maintenant, à savoir config.action_controller.asset_host = "http://assets.example.com" œuvres. Il exige que le fichier de manifest.yml

Autres conseils

Pour la question que je ne sais pas une solution permanente autre que l'exécution:

bundle exec rake assets:clean

Avant de revenir au mode de développement. Je serais curieux de voir si vous pouvez simplement ignorer les actifs en développement sans mettre le pipeline ensemble des actifs hors route.

Dans production.rb il y a une option pour votre deuxième question:

# Enable serving of images, stylesheets, and JavaScripts from an asset server
config.action_controller.asset_host = "http://assets.example.com"

Il doit alors ignorer votre répertoire actif, car il repose sur l'hôte distant. Hope qui aide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top