Ruby on Rails
Asset-Pipeline
Suche…
Einführung
Die Asset-Pipeline bietet ein Framework zum Verketten und Minimieren oder Komprimieren von JavaScript- und CSS-Assets. Es bietet außerdem die Möglichkeit, diese Assets in anderen Sprachen und Vorprozessoren wie CoffeeScript, Sass und ERB zu schreiben. Dadurch können Assets in Ihrer Anwendung automatisch mit Assets anderer Edelsteine kombiniert werden. Zum Beispiel enthält jquery-rail eine Kopie von jquery.js und aktiviert AJAX-Funktionen in Rails.
Rechenaufgaben
Standardmäßig werden sprockets-rails
mit den folgenden Rake-Aufgaben ausgeliefert:
-
assets:clean[keep]
: Entferne alte kompilierte Assets -
assets:clobber
: Kompilierte Assets entfernen -
assets:environment
Laden von Assets -
assets:precompile
: Kompiliert alle inconfig.assets.precompile
genanntenconfig.assets.precompile
Manifestdateien und -richtlinien
Im assets
Initalizer ( config/initializers/assets.rb
) sind einige Dateien explizit als vorkompiliert definiert.
# Precompile additional assets.
# application.coffee, application.scss, and all non-JS/CSS in app/assets folder are already added.
# Rails.application.config.assets.precompile += %w( search.js )
In diesem Beispiel sind application.coffee
und application.scss
sogenannte 'Manifest-Dateien'. Diese Dateien sollten verwendet werden, um andere JavaScript- oder CSS-Elemente einzuschließen. Der folgende Befehl ist verfügbar:
-
require <path>
: Dierequire
Richtlinie funktioniert ähnlich wie Rubys eigenerequire
. Es bietet eine Möglichkeit, eine Abhängigkeit von einer Datei in Ihrem Pfad zu erklären, und stellt sicher, dass diese nur einmal vor der Quelldatei geladen wird. -
require_directory <path>
: erfordert alle Dateien in einem einzigen Verzeichnis. Es ist dempath/*
ähnlich, da er nicht auf verschachtelte Verzeichnisse folgt. -
require_tree <path>
: erfordert alle geschachtelten Dateien in einem Verzeichnis. Sein glob-Äquivalent istpath/**/*
. -
require_self
: bewirkt , dass der Körper der aktuellen Datei eingefügt werden , bevor eine nachfolgenderequire
Richtlinien. Nützlich in CSS-Dateien, in denen die Indexdatei häufig globale Stile enthält, die definiert werden müssen, bevor andere Abhängigkeiten geladen werden. -
stub <path>
: Entfernen Sie eine Datei aus der Aufnahme -
depend_on <path>
: Ermöglicht dasdepend_on <path>
einer Abhängigkeit von einer Datei, ohne siedepend_on <path>
. Dies wird zum Zwischenspeichern verwendet. Durch Änderungen an der Abhängigkeitsdatei wird der Cache der Quelldatei ungültig.
Eine application.scss
Datei könnte folgendermaßen aussehen:
/*
*= require bootstrap
*= require_directory .
*= require_self
*/
Ein anderes Beispiel ist die Datei application.coffee
. Hier mit jquery
und Turbolinks
:
#= require jquery2
#= require jquery_ujs
#= require turbolinks
#= require_tree .
Wenn Sie nicht CoffeeScript verwenden, sondern nur JavaScript, lautet die Syntax:
//= require jquery2
//= require jquery_ujs
//= require turbolinks
//= require_tree .
Grundlegende Verwendung
Die Asset-Pipeline kann auf zwei Arten verwendet werden:
Wenn Sie einen Server im Entwicklungsmodus ausführen, werden Ihre Assets automatisch im Voraus vorverarbeitet und vorbereitet.
Im Produktionsmodus verwenden Sie sie wahrscheinlich zur Vorverarbeitung, Versionierung sowie Komprimierung und Kompilierung Ihrer Assets. Führen Sie dazu den folgenden Befehl aus:
bundle exec rake assets:precompile