J'ai fait le tour de la question en essayant de faire précompiler les assets sur mon serveur de production (installation directe d'ubuntu avec ruby 1.9.2 et Rails 3.1.1, et j'ai essayé 3.1.2RC avec le nouveau sprockets 2.10 également).
"L'argument require_tree doit être un répertoire". J'ai vu d'autres problèmes liés à cela sur la pile mais la situation n'est pas exactement la même et aucune des solutions proposées n'a aidé - comme créer un fichier stub dans le sous-dossier, puis référencer seulement relativement à ce point. Je n'ai pas eu de chance.
Et pour couronner le tout, cela fonctionne parfaitement sur toutes les machines de développement (mac's mais avec des configs identiques, même gem pour gem), en production env.
Voici mon /app/assets/javascript/application.js :
//= require ../../views/app/manifest
//= require_self
Il n'y a pas grand-chose à en tirer. En gros, il s'agit de pointer vers le vrai fichier manifest de la zone d'application (oui, ce n'est pas exactement du Rails vanille en boîte, mais...).
Voici mon manifeste stub dans mon views/admin (/views/app/manifest.coffee.js) :
# = require ./app
# = require_tree ./models
# = require_directory ./views <- or using require_directory, either would work fine.
Comme je l'ai dit, dans l'environnement de développement, il n'y a aucun problème. Le pipeline d'assets compile à la volée et tout se passe bien. En lançant rake assets:precompile sur la machine de développement, aucun problème non plus.
Je l'envoie sur la machine de production et j'exécute exactement le même code et j'obtiens :
L'argument require_tree doit être un répertoire
Il doit y avoir une toute petite différence que je ne vois pas. Toute aide serait très appréciée !
0 votes
Tu devrais vraiment déplacer les assets là où ils doivent être et ne pas les mettre dans le répertoire app/view
0 votes
C'est un peu plus compliqué que ce que montre cet exemple simplifié. Les vues sont étroitement liées aux actifs et il est plus logique qu'elles soient physiquement situées.
0 votes
Se pourrait-il que manifest.coffee.js soit plutôt manifest.js.coffee ?
1 votes
Ajouter
.gitkeep
(ou.gitignore
dans vos dossiers vides.