2013-09-04 11 views
5

Dopo this commit in Rails, è consigliabile che le risorse di terze parti debbano essere inserite nella cartella app/assets o config.precompile nell'elenco di tali risorse.Rails 4 - Dove vanno i beni del fornitore?

Citando un caso d'uso su quel thread

Per esempio, se ho bisogno di vendor un plugin jQuery che ha anche CSS, un tipo di carattere , ed una sprite immagine, mi piacerebbe aggiungere le .js e .css su vendor/assets/javascript e vendor/asset/stylesheet. Vorrei anche vendor gli sprite e i font in vendor/assets/images e vendor/assets/fonts, rispettivamente. L'aggiunta dell'intero percorso del vendor/asset sembra eccessiva, ma la specificazione manuale di ciascuna risorsa singolarmente, , sembra noiosa (anche se ciò potrebbe essere dovuto alla progettazione).

Aggiunta di beni di terzi all'interno app/assets porterà ad un Rails 2 come problema di una cartella globale asset.

Mi manca qualcosa? Che cosa è il modo in cui le rotaie 4 di organizzare beni di terze parti.

risposta

1

I terzi devono essere inclusi a mano in modo esplicito. Questo perché queste librerie hanno molte parti opzionali come il codice sorgente, i file readme ecc. Se hai bisogno di altre cose come immagini o caratteri puoi aggiungere questi file in una cartella pubblica o fare questo:

config/application.rb

config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif, 
"fontawesome-webfont.ttf", 
"fontawesome-webfont.eot", 
"fontawesome-webfont.svg", 
"fontawesome-webfont.woff") 

config.assets.precompile << Proc.new do |path| 
    if path =~ /\.(css|js)\z/ 
    full_path = Rails.application.assets.resolve(path).to_path 
    app_assets_path = Rails.root.join('app', 'assets').to_path 
    if full_path.starts_with? app_assets_path 
     puts "including asset: " + full_path 
     true 
    else 
     puts "excluding asset: " + full_path 
     false 
    end 
    else 
    false 
    end 
end 

ambiente/production.rb

config.serve_static_assets = true 

Quindi eseguire bundle exec rake assets:precompile RAILS_ENV=production.

+0

Di solito, quando si aggiunge una JS lib di terze parti, si aggiunge solo 'release' /' dist'version/folder, giusto? Non vuoi copiare il codice sorgente di quello comunque. E la precompilazione riprende solo js, ​​css comunque. –

+0

Vero. Ma in Rails 4 le risorse (CSS, una font e un image sprite, ecc) in lib e vendor non sono più precompilate di default. – hawk

+0

Dovresti mettere queste risorse nelle tue app/risorse per evitare di precompilare i file indesiderati. – hawk

Problemi correlati