2012-02-13 14 views
6

Sto aggiornando un'applicazione di binari esistente 2 a binari 3 e avendo qualche problema a capire la pipeline di asset. Ho letto attraverso la guide e se ho capito bene, i file in una qualsiasi delle seguenti directory risolverò a/Attività:rails3 pipeline di asset e conflitti di file

  • app/Attività
  • lib/Attività
  • vendor/Attività

e potresti accedervi utilizzando helpers ... cioè

image_tag('logo.png') 

Ma quello che non capisco è come le collisioni vengono gestite? Per esempio, che se ci sono i seguenti file:

  • app/assets/images/logo.png
  • lib/assets/images/logo.png

Se vado a MyApp. it/assets/images/logo.png, quale file verrà restituito? Potrei verificare manualmente le collisioni all'interno della mia app, ma questo diventa un punto dolente quando si usano gemme che si basano sulla pipeline degli asset.

risposta

2

In base a ciò che ho trovato, non è possibile avere file duplicati, poiché i binari restituiranno solo il primo trovato.

Questo mi sembra un po 'di un difetto di progettazione, come una gemma non può namespace proprio patrimonio

+0

ho jQuery in bundle dal jquery-rails' gemma '. In una parte separata del mio progetto Rails, vorrei utilizzare una versione diversa di jQuery, recuperata da Bower, senza abbandonare 'jquery-rails' per il resto del progetto. C'è un modo per farlo? –

0

Perché non approfittando del index manifest e organizzare il vostro app/assets in moduli disaccoppiati? È quindi possibile fare riferimento a una particolare immagine, image_tag('admin/logo.png'), e ottenere gratuitamente la base di codici UI organizzata in modo più significativo. Potresti persino promuovere un componente complesso, come l'applicazione per pagine singole nel proprio modulo e riutilizzarlo da diverse parti dell'app.

Diciamo che app è composto da tre moduli: il lato pubblico, un'interfaccia utente admin e, ad esempio, un CRM per lasciare i vostri agenti monitorare il processo di vendita presso la vostra azienda:

app/assets/ 
├── coffeescripts 
│   ├── admin 
│   │   ├── components 
│   │   ├── index.coffee 
│   │   └── initializers 
│   ├── application 
│   │   ├── components 
│   │   ├── index.sass 
│   │   └── initializers 
│   └── crm 
│    ├── components 
│    ├── index.sass 
│    └── initializers 
├── images 
│   ├── admin 
│   ├── application 
│   └── crm 
└── stylesheets 
    ├── admin 
    │   ├── components 
    │   └── index.sass 
    ├── application 
    │   ├── components 
    │   └── index.sass 
    └── crm 
     ├── components 
     └── index.sass 

21 directories, 6 files 

Non dimenticare di aggiornare il vostro application.rb in modo che saranno precompilati correttamente:

config.assets.precompile = %w(admin.js application.js crm.js 
           admin.css application.css crm.css) 
Problemi correlati