web-dev-qa-db-fra.com

Le pipeline d’actifs Rails n’incluant pas les fichiers requis dans le manifeste application.js

Le pipeline d’actifs Rails n’inclut pas les fichiers requis dans application.js.

Application.js est le seul fichier javascript rendu au navigateur. Les lignes require ne sont pas compilées pour inclure les balises comme elles devraient l'être:

// This is a manifest file that'll be compiled into application.js, which will include all the files
// listed below.
//
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path.
//
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
// the compiled file.
//
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD
// GO AFTER THE REQUIRES BELOW.
//
//= require jquery
//= require jquery_ujs
//= require Twitter/bootstrap
//= require bootstrap
//= require_tree .

;

dans config/application.rb j'ai config.assets.enable = true

J'utilise Rails 3.2.8, et j'ai essayé Ruby 1.9.3-p398 et 2.0.0-p0 installé à l'aide de rvm.

Comment puis-je obtenir application.js pour inclure les fichiers requis?

EDIT: Il semble que le verrou sur cette question ait été récemment déverrouillé et que l'activité ait augmenté. Cela fait un moment que je travaille dessus et le code n'existe plus. Si je me souviens bien, j'ai réinstallé Ruby and Rails et le problème a été résolu. 

Dois-je fermer cette question? Quelle est la procédure appropriée dans cette situation? 

22
everett1992

J'ai répondu ceci ici:

Rails 3.2.8 Application.js et Application.css ne fonctionnent pas comme expcted

Voici le texte:

J'avais aussi ce problème, mais avec les nouvelles versions de Rails et Ruby.

En examinant le journal, javascript.js me servait du cache Rails Car le serveur n’a pas constaté de changement dans le fichier. Je suis allé et ai déplacé le Besoin de lignes (juste un) pour dire à Rails qu'il y a un changement dans Le fichier et le recompiler/utiliser. Wellm qui l’a fait pour moi!

J'espère que ça aide quelqu'un.

Une autre découverte importante consiste à mettre à jour votre bijou de pignons dans votre Gemfile.

J'avais la version 2.2.1 et je rencontrais des problèmes. Après la mise à niveau vers la version 2.2.2, cela fonctionnait.

gem 'sprockets', '2.2.2' 
13
lsaffie

Si vous effectuez une mise à niveau de la version 3.0.x - 3.1.x et que vous exécutez ce problème, effectuez une mise à niveau vers la version 3.2.x.

J'ai récemment mis à niveau une application de la version 3.0 - 3.1.12 et j'ai constaté que le manifeste d'actifs ne fonctionnerait pas avec Ruby 1.9.3, Ruby 2.0 ou Ruby 2.1.1. Je suis ensuite passé à la version 3.2.17 et tout semble fonctionner correctement avec Ruby 2.1.1. 

J'espère que cela aidera toute autre personne susceptible de rencontrer ce problème lors de la mise à niveau. 

3
user3407501

Une raison commune à cela est que les actifs sont compilés et trouvés dans public/assets, auquel cas Rails ne les recompilera pas. Si vous avez des actifs ici et que vous n'avez pas défini config.serve_static_assets sur false, Rails ne recompilera pas vos actifs:

config.serve_static_assets = false

Donc, si vous avez précompilé des éléments dans public/assets, supprimez-les ou ajoutez la ligne ci-dessus à development.rb

1
Houen

Avez-vous copié/collé vos fichiers d'amorçage dans le dossier vendor/assets ou dans app/assets? Le pipeline d'actifs n'inclut que le dossier app/assets par défaut, pas lib/assets ou vendor/assets. Pour inclure fournisseur/actifs dans le pipeline, entrez cette commande dans votre fichier app/assets/javascript/application.js:

//= require_tree ../../../vendor/assets/javascripts/

Pour faire la même chose pour vos fichiers CSS:

*= require_tree ../../../vendor/assets/stylesheets/

Je sais que les commentaires en haut du fichier indiquent que tous les fichiers de l'application, de la bibliothèque ou du dossier du fournisseur seront inclus, mais j'ai constaté que ce n'était pas le cas. Je ne peux pas expliquer pourquoi, mais voir ici pour ma source. Essayez les commandes ci-dessus ou incluez les fichiers d’amorçage dans vos dossiers app/assets. J'espère que cela pourra aider.

0
Richie Thomas