2015-09-17 12 views
6

Perché non è possibile precompilare le risorse in un ambiente di sviluppo? So che i pignoni fondamentalmente compilano tutte le risorse.In che modo le risorse vengono precompilate nell'ambiente di sviluppo su ruby ​​on rails?

Quando andiamo in ambiente di produzione poi eseguire il comando:

rake assets:precompile 

Ma nel ENV sviluppo non possiamo fare nulla per lui di compilarsi. Quali sono le differenze nel comportamento della compilazione delle risorse in entrambi gli ambienti?

risposta

6

Ogni applicazione Web contiene alcune immagini e file CSS per renderla carina, insieme ad alcuni file JavaScript per gestire l'interazione e il comportamento dell'utente. Se le risorse si caricano più velocemente, l'applicazione web dovrebbe funzionare meglio. Esistono molte strategie per caricare rapidamente le risorse come minifying, compressione (gzip), memorizzazione nella cache ecc.

In modalità di sviluppo, le risorse vengono fornite come file separati nell'ordine in cui sono specificate nel file manifest.

Il manifesto di app/Attività/javascript/application.js:

//= require core 
//= require projects 
//= require tickets 

Negli Sprockets ambiente di produzione utilizza lo schema delle impronte digitali di cui sopra. Di default Rails assume che le risorse sono state precompilate e saranno servite come risorse statiche dal tuo server web.

Durante la fase di precompilazione, un MD5 viene generato dai contenuti dei file compilati e inserito nei nomi dei file così come sono scritti sul disco. Questi nomi di impronte digitali sono usati dagli helper di Rails al posto del nome manifest.

Per esempio, questo:

<%= javascript_include_tag "application" %> 
<%= stylesheet_link_tag "application" %> 

genera qualcosa di simile:

<script src="/assets/application-908e25f4bf641868d8683022a5b62f54.js"></script> 
<link href="/assets/application-4dd5b109ee3439da54f5bdfd78a80473.css" media="screen" 
rel="stylesheet" /> 

Nota: con l'Asset Pipeline i: di cache e le opzioni: concat non vengono più utilizzati, eliminare queste opzioni dal javascript_include_tag e stylesheet_link_tag.

Il comportamento delle impronte digitali è controllato dall'opzione di inizializzazione config.assets.digest (che di default è true per la produzione e false per tutto il resto).

Precompiling Rails Assets for Development

13

Se si desidera precompilare attività in ambiente di sviluppo è possibile utilizzare questo comando:

RAILS_ENV=development bundle exec rake assets:precompile 

È possibile precompilare attività in ambiente di sviluppo di default utilizzando config/development.rb

config.assets.debug = false 

Nella maggior parte casi in cui non ne hai bisogno perché il tuo processo di sviluppo sarà più difficile.

+0

Puoi ellaborate lo scopo di config.assets.compile = false –

+0

C'è una bella risposta su questa domanda: http://stackoverflow.com/a/8827757/589620 –

+0

Cosa config.assets.compile = false sta dicendo che non usare risorse compilate, basta prendere tutto nella cartella delle risorse ma se si imposta su true di quanto ci si aspetti che siano state compilate le risorse e le rotaie cercheranno quelle risorse compilate. – Zahid