2013-02-06 13 views
16

Abbiamo un'app per rails che ho recentemente aggiornato da Rails 3.0 a Rails 3.2. Questa app offre più client. Per personalizzarlo per ogni cliente, abbiamo la directory app/themes. In ci sono sottomoduli. Ogni sottomodulo contiene cose come locales/en.yml, views/layouts, views/controller_name, ecc. Usiamo il prepend_view_path per aggiungere le visualizzazioni del tema e lo I18n.load_path da aggiungere nelle impostazioni internazionali. Stiamo cercando di utilizzare la pipeline di asset in modo da poter tenere tutto il mix di materiale client fuori dalla directory pubblica e tenerlo contenuto in ciascun tema.Aggiungere una cartella al percorso della pipeline degli asset?

C'è un modo in cui posso dire dinamicamente ai binari di caricare quale cartella tema/nome-tema/risorsa voglio? Utilizziamo la logica delle impostazioni per impostare quale tema è attivo. Quindi, se ho il tema impostato su "google", il ApplicationController quindi carica i file dal percorso:

app/themes/google/locales/*.yml 
app/themes/google/views 

Quello che mi piacerebbe essere in grado di fare è avere il file manifesto,

app/themes/google/assets/stylesheets/application.css 

facilmente accessibile per il layout, proprio come si farebbe in un file di app/views/layouts:

= stylesheet_link_tag "application" 

c'è un modo posso fare questo? o dobbiamo spostare manualmente le risorse nella directory delle risorse effettive?

+0

C'è un modo per caricare asset per controller, ma che non è quello che stai cercando. Si può considerare che la pipeline delle risorse (in produzione) precompila e ottimizza tutte le risorse in un singolo file (rispettivamente 'application.js' e' application.css') in '/ public'. Lo scopo è di ridurre le chiamate al server per recuperare le risorse. –

risposta

15

era in grado di farlo nel application.rb:

require "#{Rails.root}/app/models/settings.rb" 
config.assets.paths << "#{Rails.root}/app/themes/#{Settings.theme}/assets/stylesheets" 
config.assets.paths << "#{Rails.root}/app/themes/#{Settings.theme}/assets/images" 
config.assets.paths << "#{Rails.root}/app/themes/#{Settings.theme}/assets/javascripts" 
+0

dopo aver aggiunto una riga come "config.assets.paths <<" # {Rails.root}/app/assets/fonts "', o quelli che hai aggiunto, c'è un comando che deve essere eseguito? I caratteri che sto cercando di usare non funzionano. Ho pensato che fosse una domanda abbastanza simile da aggiungere qui un commento piuttosto che iniziare una nuova domanda. –

+0

È un motivo per cui aggiungi font nella pipeline degli asset? Puoi ancora metterli in pubblico e farli riferimento in questo modo, come qualsiasi altro file pubblico che avresti in 3.0 precedenti. – agmcleod

+0

sì, sto provando a unire le icone di zurb foundation nel mio progetto, e ci sono quattro file di font di tipi diversi e fogli di stile .css che, finora, ho pensato di inserire nel file foundation.css che ho già da usando la fondazione di zurb. –

Problemi correlati