Weiß jemand, wie man der Asset-Pipeline in Rails 3.1 einen weiteren Ordner hinzufügt?
Ich möchte app/assets/fonts
genauso dienen, wie app/assets/images
es serviert wird.
Update: 5-7-2013
Nur um einige Erläuterungen für zukünftige Personen, die diese Frage finden, hinzuzufügen, um explizit einen Asset-Pfad in Ihrer application.rb-Datei hinzuzufügen:
config.assets.paths << "#{Rails.root}/app/assets/fonts"
Da sich der obige Pfad jedoch unter befindet, müssen app/assets
Sie ihn nicht explizit hinzufügen. Sie müssen lediglich Ihre Rails-App neu starten, damit Sprockets ihn abrufen kann.
Sie müssen explizit Pfade hinzufügen , die außerhalb sind app/assets
, lib/assets
oder vendor/assets
, und nur daran erinnern , dass während Pinion neue Dateien in Ordnern aufgreift , die vorhanden waren , wenn die Anwendung geladen wird , in meiner Erfahrung es keine neuen Ordner in den Asset - Pfade nicht abholen ohne ein Neustart.
config.assets.paths << "#{Rails.root}/app/assets/active_admin"
arbeitet nicht für mich. Beim Versuch, eine bestimmte Seite nach der Bereitstellung für die Bereitstellung anzuzeigen, wird immer noch eine Fehlermeldung angezeigt, dass die.js
Datei in diesem Ordner nicht kompiliert wurde.Antworten:
Andrew
app/assets/fonts
ist tatsächlich bereits in Ihrem Asset-Ladepfad, zusammen mitimages
. Sie können also einfach auf die gleiche Weise auf das Asset verweisen:<%= asset_path('/Ubuntu/Ubuntu-R-webfont.eot') %>
[1] oder wie auch immer Sie auf Ihre Bilder verweisen.Ich brauchte eine Weile, um mich auch darum zu kümmern. Ich weiß immer noch nicht, was passiert, wenn eine Datei mit demselben Namen in
app/assets/fonts
und enthalten istapp/assets/images
.[1] Angenommen, Sie haben eine Schriftart bei
app/assets/fonts/Ubuntu/Ubuntu-R-webfont.eot
quelle
config.assets.paths << "#{Rails.root}/app/assets/fonts"
und das hat funktioniert. Ich denke, Sie haben Recht, dass alles unter/assets
automatisch aufgenommen werden soll, aber aus irgendeinem Grund gab es 404, bis ich die obige Zeile zu meinerapplication.rb
Datei hinzufügte . Ich werde Ihre Antwort jedoch akzeptieren, weil ich denke, dass sie korrekt sein wird, wenn die Veröffentlichung abgeschlossen ist, und weil mit diesem Kommentar jeder, der sie liest, es herausfinden kann :)config.assets.paths
Array die ausgewählte Datei angezeigt . Dies kann vermieden werden, indem derasset_path()
Helfer verwendet und das Verzeichnis angegeben wird.Andrew, Jason, stimmte zu. FWIW Ich habe dies in meiner config / application.rb neben
# Enable the asset pipeline config.assets.enabled = true config.assets.paths << "#{Rails.root}/app/assets/fonts"
quelle
Rails.root.join('app', 'assets', 'fonts')
Rails.root.join
sollte so sein, wie Sie es tun, um plattformübergreifend flexibel zu sein.Durch das Erstellen
app/assets/images
undapp/assets/fonts
werden sie automatisch zum Assets-Pfad hinzugefügt.Öffnen Sie die Rails-Konsole nach dem Erstellen und überprüfen Sie Folgendes:
(
y
ist eine Abkürzung für dieyaml
Methode)quelle
Es funktioniert ohne Hinzufügen des Pfads. Achten Sie jedoch darauf, dass Sie einen gültigen Dateinamen für das Asset verwenden.
url("#{asset_path 'fontawesome-webfont.eot'}?#iefix") format('embedded-opentype'), ... url("#{asset_path 'fontawesome-webfont.svg'}#FontAwesome") format('svg');
Lassen Sie in diesem Fall beispielsweise
?#iefix
den Namen der Schriftartdatei außerhalbquelle
Ich kann bestätigen, dass es funktioniert, ohne die neuen Pfade zur Konfiguration in Rails 3.1.0.rc4 (und vermutlich höher) hinzuzufügen. Ich habe meinen Server zurückgeworfen, Sie könnten das gleiche tun.
quelle
Erstellen Sie einen
assets/fonts
Ordner, fügen Sie eine Schriftart hinzu und verwenden Sie das Thema in Ihrer CSS-Datei wie folgt@font-face { font-family: Sawasdee; src: url(Sawasdee.ttf); }
quelle