J'ai, dans mon répertoire app/assets, les répertoires javascripts et stylesheets, comme toute application Rails normale. Je voulais, cependant, avoir un répertoire de plugins aussi bien.Rails - Rails.root.join se conduisant mal après le déploiement
Exemple:
app/assets/plugins/myPlugin1/somefile.js
app/assets/plugins/myPlugin1/somefile.css
La chose est, si j'utilise
<%= javascript_include_tag 'plugins/myPlugin1/somefile.js' %>
je recevrais une erreur 404, comme
/assets/javascripts/plugins/myPlugin1/somefile.js
n'existe pas. J'ai alors remarqué que le répertoire "plugins" essayait d'être accessible à l'intérieur de javascripts. Je suppose que cela a quelque chose à voir avec "javascript_include_tag".
Après quelques recherches, je compris que je devais inclure cette ligne dans config/application.rb
config.assets.paths << Rails.root.join("app", "assets")
Et il semblait travailler. Sur WEBRick, en développement, ça a fonctionné à merveille. Maintenant, j'ai été déployé avec succès sur un serveur, précompilé les actifs, et pensé que j'étais prêt à partir.
le répertoire
/public/assets/
a été créé. Tout dans "app/assets/javascripts", "app/actifs/feuilles de style" et "app/assets/plugins" ont été précompilée aux biens publics/
Ce qui a
app/assets/javascripts/login.js
a pu être accès à une vue qui avait
<%= javascript_include_tag 'login.js' %>
cE qUI N'A PAS FONCTIONNE
fichiers cela appartenait à "plugins".
app/assets/plugins/myPlugin1/somefile.js
a été précompilée à
public/assets/myPlugin1/somefile.js
Mais quand je couru
<%= javascript_include_tag 'plugins/myPlugin1/somefile.js' %>
il tente d'accéder
/javascripts/plugins/myPlugin1/somefile.js
lorsque le bon chemin, d'après mon expérience dans le développement , serait:
/myPlugin1/somefile-(some hex hash).js
Donc, comme vous pouvez le voir, dans la production, je suis dans la même question que quand je ne l'ai pas ajouté
config.assets.paths << Rails.root.join("app", "assets")
à application.rb
Que pourrait être le problème?
Essayé pour Dir.glob ("# {Rails.root}/app/assets/tableau de bord ** /"). Each do | path | 'mais ne pouvait pas voir les actifs de dossier dans la console avec' Rails .application.config.assets.paths' – vipin8169
manque-t-il un '/' avant que ces deux * ou que les deux * ne soient après la dernière barre oblique? – cassioscabral
Non, j'ai essayé 'Dir.glob (" # {Rails.root }/app/assets/dashboard/**/"). each do | path |' ainsi que 'Dir.glob (" # {Rails.root}/app/assets/**/*/"). | path | 'et quelques autres combinaisons – vipin8169