Asset -Vorkompilierung für die Manifestdatei unter Verzeichnis
-
25-10-2019 - |
Frage
Ich benutze Rails 3.1 und habe unter Vermögenswerten solche Dateien wie folgt:
assets
javascripts
admin
admin.js
a1.js
client
client.js
c1.js
admin.js sieht so aus
//
//= require jquery
//= require jquery_ujs
//= require a1
Client.js sieht so aus
//
//= require jquery
//= require c1
Alles funktioniert im Entwicklungsmodus gut. Wenn ich Vermögenswerte durchbessere: Precompile dann sehe ich keine JavaScript -Dateien in der Öffentlichkeit/Vermögenswerte. Ich sehe alle Stylesheets in der Öffentlichkeit/Vermögenswerte.
Ich denke, dies hat damit zu tun, dass sich in diesem Fall manifestierte Dateien (admin.js und client.js) im Unterverzeichnis befinden.
Stimmt das also, dass Rake Assets: Precompile nicht in Unterverzeichnisse untersucht?
Alle Vorschläge, wie man dies behebt. Ich bevorzuge die Dateien so, wie ich es angelegt habe, weil ich eine Reihe von JavaScript -Dateien habe.
Lösung
In der Schienenkonfiguration befindet sich ein Präkompilen -Array, mit dem die Dateien auf Präkompilien festgelegt sind. application.js und application.css in irgendein Verzeichnis.
Sie müssen Ihre Dateien zum Precompile -Array hinzufügen:
config.assets.precompile += ['admin/admin.js', 'client/client.js']
Und sie sollten über:
javascript_include_tag "admin/admin.js"
und
javascript_include_tag "client/client.js"
Andere Tipps
Bei Rails 3.2.6 können Sie beim Verwalten von JavaScript -Assets in Subdirs das Manifest für jeden Subdir 'index.js' benennen (im Gegensatz zu OPs "admin.js" und "client.js") und dann in Konfigurationen/Umgebungen /Production.rb sagen:
config.assets.precompile += ['admin.js', 'client.js']
Die Magie hinter den Kulissen schaut im Administrator -Subdir und kompiliert nach den Spezifikationen in Index.js, die an admin.js ausgegeben werden. Ebenso für den Kunden.
Das Vermögen ist dann zugänglich über:
javascript_include_tag 'admin'