Asset pipeline är en mycket kraftfull funktion som Rails erbjuder, för att lösa ett brett spektrum av problem relaterade till webbdesign.
Det minimerar det manuella arbetet genom att kompilera och bearbeta alla stilmallar, javascript-filer, bilder etc när det är möjligt och förbereds för användning. Asset pipeline kan förbättra kvaliteten på applikationen när det gäller dess prestanda och flexibilitet.
Asset Pipeline:
Tillgångspipelinen tillhandahåller ett ramverk för att sammanfoga och förminska eller komprimera JavaScript- och CSS-tillgångar. Det lägger också till möjligheten att skriva dessa tillgångar på andra språk och förprocessorer som CoffeeScript, Sass och ERB.
Tillgångsrörledningen är tekniskt sett inte längre en kärnfunktion i Rails 4, den har extraherats ur ramverket och in i kedjehjulsskenornas pärla.
Tillgångspipelinen är aktiverad som standard.
Vi kan inaktivera tillgångspipelinen medan vi skapar en ny applikation genom att passera alternativet –skip-sprockets.
rails nytt appnamn –skip-sprockets
Rails 4 lägger automatiskt till sass-rails, coffee-rails och glitter juveler till din Gemfile, som används av Sprockets för tillgångskomprimering:
pärla "sass-rails"
pärla "fulare"
pärla "kaffe-skenor"
Att använda –skip-sprockets-alternativet kommer att förhindra Rails 4 från att lägga till sass-rails och uglifier till Gemfile, så om du senare vill aktivera tillgångspipelinen måste du lägga till dessa ädelstenar till din Gemfile. Dessutom kommer att skapa en applikation med alternativet –skip-sprockets generera en något annorlunda config/application.rb-fil, med en require-sats för sprockets railtie som kommenteras ut. Du måste ta bort kommentaroperatorn på den raden för att senare aktivera tillgångspipelinen:
# kräver "kedjehjul/railtie"
För att ställa in tillgångskomprimeringsmetoder, ställ in lämpliga konfigurationsalternativ i production.rb – config.assets.css_compressor för din CSS och config.assets.js_compressor för din JavaScript:
config.assets.css_compressor = :yui
config.assets.js_compressor = :uglifier
Så här använder du Asset Pipeline:
I tidigare versioner av Rails fanns alla tillgångar i offentliga underkataloger som bilder, javascript och stilmallar. Med tillgångspipeline är den föredragna platsen för dessa tillgångar nu app/tillgångar-katalogen. Filer i den här katalogen betjänas av Sprockets mellanprogram.
Tillgångar kan fortfarande placeras i den offentliga hierarkin. Alla tillgångar som är offentliga kommer att visas som statiska filer av applikationen eller webbservern när config.serve_static_files är inställt på sant. Du bör använda app/tillgångar för filer som måste genomgå en viss förbearbetning innan de visas.
I produktionen förkompilerar Rails dessa filer till publika/tillgångar som standard. De förkompilerade kopiorna serveras sedan som statiska tillgångar av webbservern. Filerna i app/tillgångar serveras aldrig direkt i produktionen.
Controllerspecifika tillgångar:
När du genererar en ställning eller en styrenhet genererar Rails också en JavaScript-fil (eller CoffeeScript-fil om coffee-rails ädelstenen finns i Gemfile) och en Cascading Style Sheet-fil (eller SCSS-fil om sass-rails finns i Gemfile) för den kontrollanten. Dessutom, när en scaffold genereras, genererar Rails filen scaffolds.css (eller scaffolds.css.scss om sass-rails finns i Gemfile.)
Till exempel, om du genererar en ProjectsController kommer Rails också att lägga till en ny fil på app/assets/javascripts/projects.js.coffee och en annan på app/assets/stylesheets/projects.css.scss. Som standard kommer dessa filer att vara redo att användas av din applikation omedelbart genom att använda require_tree-direktivet. Se Manifestfiler och direktiv för mer information om require_tree.
Du kan också välja att endast inkludera kontrollerspecifika stilmallar och JavaScript-filer i sina respektive kontroller genom att använda följande:
<%= javascript_include_tag params[:controller] %> eller <%= stylesheet_link_tag params[:controller] %>
Förkompilering av tillgångar:
Rails levereras med en rake-uppgift för att kompilera tillgångsmanifesterna och andra filer i pipelinen.
Kompilerade tillgångar skrivs till den plats som anges i config.assets.prefix. Som standard är detta katalogen /assets.
Du kan anropa den här uppgiften på servern under driftsättning för att skapa kompilerade versioner av dina tillgångar direkt på servern. Se nästa avsnitt för information om att kompilera lokalt.
Rakeuppgiften är:
$ RAILS_ENV=produktionsfack/raketillgångar:förkompilera
Capistrano (v2.15.1 och högre) innehåller ett recept för att hantera detta i driftsättning. Lägg till följande rad i Capfile:
ladda "deploy/assets"
Detta länkar mappen som anges i config.assets.prefix till shared/assets. Om du redan använder den här delade mappen måste du skriva din egen distributionsuppgift.
Det är viktigt att den här mappen delas mellan distributioner så att fjärrcachelagrade sidor som refererar till de gamla kompilerade tillgångarna fortfarande fungerar under den cachade sidans livstid.
Live sammanställning:
I vissa fall kanske vi vill använda livekompilering. I detta läge hanteras alla förfrågningar om tillgångar i pipeline direkt av Sprockets.
Så här aktiverar du denna alternativuppsättning:
config.assets.compile = sant
På den första begäran kompileras och cachelagras tillgångarna som beskrivs i utvecklingen ovan, och manifestnamnen som används i hjälparna ändras för att inkludera MD5-hash.
Sprockets ställer också in Cache-Control HTTP-huvudet till max-age=31536000. Detta signalerar alla cachar mellan din server och klientwebbläsaren att detta innehåll (filen som serveras) kan cachelagras i 1 år. Effekten av detta är att minska antalet förfrågningar för denna tillgång från din server; tillgången har en god chans att vara i den lokala webbläsarens cache eller någon mellanliggande cache.
Det här läget använder mer minne, presterar sämre än standardläget och rekommenderas inte.
Om du distribuerar en produktionsapplikation till ett system utan några redan existerande JavaScript-körtider, kanske du vill lägga till en till din Gemfile: group :production do
pärla 'therubyracer'
slutet
Railscarma har implementerat Ruby on Rails från dess begynnande stadier för utveckling, utbildning, distribution och bidrag tillbaka till Rails Community och tillhandahåller bästa Ruby on Rails utvecklingstjänster. RailsCarma tillhandahåller Ruby on Rails-tjänster, inklusive konsulttjänster, arkitektur, byggnad, förvaltning och utbyggnad, till företag över hela världen. Du kan också anlita Ruby on Rails-utvecklare med en lättanställd process.Kontakta oss att veta mer.
Läs mer :
Kontakta oss.