L'asset pipeline è una funzionalità molto potente offerta da Rails, per risolvere un'ampia gamma di problemi legati alla progettazione web.
Riduce al minimo i lavori manuali compilando ed elaborando tutti i fogli di stile, file javascript, immagini ecc. quando possibile ed è pronto per l'uso. La pipeline degli asset può migliorare la qualità dell'applicazione in termini di prestazioni e flessibilità.
La pipeline degli asset:
La pipeline delle risorse fornisce un framework per concatenare e minimizzare o comprimere risorse JavaScript e CSS. Aggiunge inoltre la possibilità di scrivere queste risorse in altri linguaggi e preprocessori come CoffeeScript, Sass ed ERB.
Tecnicamente la pipeline degli asset non è più una caratteristica fondamentale di Rails 4, è stata estratta dal framework nella gemma sprockets-rails.
La pipeline delle risorse è abilitata per impostazione predefinita.
Possiamo disabilitare la pipeline degli asset durante la creazione di una nuova applicazione passando l'opzione –skip-sprockets.
rotaie nuovo nome app –skip-sprockets
Rails 4 aggiunge automaticamente le gemme sass-rails, coffee-rails e uglifier al tuo Gemfile, che vengono utilizzate da Sprockets per la compressione delle risorse:
gemma 'sass-rails'
gemma 'bruttante'
gemma 'coffee-rails'
L'uso dell'opzione –skip-sprockets impedirà a Rails 4 di aggiungere sass-rails e uglifier a Gemfile, quindi se in seguito vorrai abilitare la pipeline delle risorse dovrai aggiungere quelle gemme al tuo Gemfile. Inoltre, la creazione di un'applicazione con l'opzione –skip-sprockets genererà un file config/application.rb leggermente diverso, con un'istruzione require per la fascetta sprockets commentata. Dovrai rimuovere l'operatore commento su quella riga per abilitare successivamente la pipeline delle risorse:
# richiede “pignoni/cravatta”
Per impostare i metodi di compressione delle risorse, imposta le opzioni di configurazione appropriate in production.rb – config.assets.css_compressor per il tuo CSS e config.assets.js_compressor per il tuo JavaScript:
config.assets.css_compressor = :yui
config.assets.js_compressor = :uglifier
Come utilizzare la pipeline di risorse:
Nelle versioni precedenti di Rails, tutte le risorse si trovavano in sottodirectory pubbliche come immagini, javascript e fogli di stile. Con la pipeline delle risorse, la posizione preferita per queste risorse è ora la directory app/assets. I file in questa directory sono serviti dal middleware Sprockets.
Le risorse possono comunque essere inserite nella gerarchia pubblica. Tutte le risorse pubbliche verranno servite come file statici dall'applicazione o dal server Web quando config.serve_static_files è impostato su true. Dovresti utilizzare app/risorse per i file che devono essere sottoposti ad una pre-elaborazione prima di essere pubblicati.
In produzione, Rails precompila questi file in public/assets per impostazione predefinita. Le copie precompilate vengono quindi servite come risorse statiche dal server web. I file nell'app/risorse non vengono mai serviti direttamente in produzione.
Risorse specifiche del controller:
Quando generi uno scaffold o un controller, Rails genera anche un file JavaScript (o un file CoffeeScript se la gem coffee-rails è nel Gemfile) e un file Cascading Style Sheet (o un file SCSS se sass-rails è nel Gemfile) per quel controllore. Inoltre, durante la generazione di uno scaffold, Rails genera il file scaffolds.css (o scaffolds.css.scss se sass-rails è nel Gemfile.)
Ad esempio, se generi un ProjectsController, Rails aggiungerà anche un nuovo file in app/assets/javascripts/projects.js.coffee e un altro in app/assets/stylesheets/projects.css.scss. Per impostazione predefinita questi file saranno pronti per essere utilizzati immediatamente dalla tua applicazione utilizzando la direttiva require_tree. Vedi File manifest e direttive per maggiori dettagli su require_tree.
Puoi anche scegliere di includere fogli di stile e file JavaScript specifici del controller solo nei rispettivi controller utilizzando quanto segue:
<%= javascript_include_tag params[:controller] %> o <%= stylesheet_link_tag params[:controller] %>
Risorse di precompilazione:
Rails viene fornito in bundle con un'attività rake per compilare i manifest delle risorse e altri file nella pipeline.
Le risorse compilate vengono scritte nella posizione specificata in config.assets.prefix. Per impostazione predefinita, questa è la directory /assets.
Puoi chiamare questa attività sul server durante la distribuzione per creare versioni compilate delle tue risorse direttamente sul server. Vedere la sezione successiva per informazioni sulla compilazione locale.
Il compito del rastrello è:
$ RAILS_ENV=bin di produzione/asset rake: precompilare
Capistrano (v2.15.1 e successive) include una ricetta per gestire questa situazione durante la distribuzione. Aggiungi la seguente riga a Capfile:
caricare 'distribuzione/risorse'
Questo collega la cartella specificata in config.assets.prefix a shared/assets. Se usi già questa cartella condivisa dovrai scrivere la tua attività di distribuzione.
È importante che questa cartella sia condivisa tra le distribuzioni in modo che le pagine memorizzate nella cache remota che fanno riferimento alle vecchie risorse compilate funzionino ancora per tutta la vita della pagina memorizzata nella cache.
Compilazione dal vivo:
In alcune circostanze potremmo voler utilizzare la compilazione live. In questa modalità tutte le richieste di asset in pipeline vengono gestite direttamente da Sprockets.
Per abilitare questa opzione impostare:
config.assets.compile = vero
Alla prima richiesta le risorse vengono compilate e memorizzate nella cache come indicato nello sviluppo sopra e i nomi manifest utilizzati negli helper vengono modificati per includere l'hash MD5.
Sprockets imposta inoltre l'intestazione HTTP Cache-Control su max-age=31536000. Ciò segnala a tutte le cache tra il tuo server e il browser client che questo contenuto (il file servito) può essere memorizzato nella cache per 1 anno. L'effetto di ciò è ridurre il numero di richieste per questa risorsa dal tuo server; la risorsa ha buone probabilità di trovarsi nella cache del browser locale o in una cache intermedia.
Questa modalità utilizza più memoria, ha prestazioni inferiori rispetto a quella predefinita e non è consigliata.
Se stai distribuendo un'applicazione di produzione su un sistema senza runtime JavaScript preesistenti, potresti volerne aggiungere uno al tuo Gemfile: group :production do
gemma 'therubyracer'
FINE
Railscarma ha implementato Ruby on Rails fin dalle sue fasi nascenti per lo sviluppo, la formazione, l'implementazione e il contributo alla comunità Rails e per fornire il meglio Servizi di sviluppo di Ruby on Rails. RailsCarma fornisce servizi Ruby on Rails end-to-end tra cui consulenza, architettura, costruzione, gestione ed estensione ad aziende di tutto il mondo. Puoi anche assumere sviluppatori Ruby on Rails con un processo di assunzione semplice.Contattaci per saperne di più.
Per saperne di più :
Mettiti in contatto con noi.