2012-04-12 15 views
6

Sto provando a creare un motore Rails "backend di amministrazione". Supponiamo che il motore ha i seguenti beni:Sovraccarico di asset sui motori di Rails: richiede un file di asset della gemma secondario non riuscito

ENGINE/app/assets 
├── javascripts 
│   └── railsyard 
│    ├── admin.js.coffee 
│    ├── admin_customizations.js.coffee 
... 

Qualora il admin.js.coffee sta richiedendo admin_customizations.js.coffee, cioè un file vuoto pronto per essere sovrascritto dal hosting di applicazioni Rails.

[ENGINE/app/assets/javascripts/my_engine/admin.js.coffee] 
#= require admin_customizations 
# ...some code... 

[ENGINE/app/assets/javascripts/my_engine/admin_customizations.js.coffee] 
# Override this empty file to add custom JS behaviour! 

Tutto funziona a meraviglia, fino a quando provo a richiedere alcuni beni provenienti da una gemma secondario:

[APP/app/assets/javascripts/my_engine/admin_customizations.js.coffee] 
#= require modernizr # this line gets ignored 
alert "Foobar"  # this line works 

La gemma modernizr-rails è una dipendenza della app di hosting piuttosto che il motore. Si noti che se provo a richiedere modernizr da un file di asset che non è un override di alcuni file di asset del motore, tutto funziona di nuovo.

C'è un modo per risolvere questa situazione?

+0

C'è qualche vantaggio nel file di sovrascrittura? Voglio dire, lo sviluppatore può semplicemente aggiungere il suo js. – thomasfedb

+0

potrebbe essere correlato a http://stackoverflow.com/questions/18261116/how-to-change-the-order-that-gems-are-loaded-from-within-one-of-the-gems – montrealmike

risposta

0

Credo di aver fatto esattamente quello che descrivi senza avere il problema che dici di avere.

Sei sicuro che non sta succedendo qualcos'altro? La riga di richiesta che si ottiene ignorata non ha molto senso: i pignoni devono includere il file richiesto oppure sollevare se non riesce a trovarlo. Fare silenziosamente niente non sembra giusto.

È possibile che si stia innescando un bug nei pignoni o che la pipeline degli asset della rotaia ne faccia uso, ma è più probabile che succeda qualcos'altro.

Assicurati di non aver accidentalmente fornito il tuo file 'modernizr.js` vuoto nell'app e/o motore locale, ignorando per sbaglio quello che intendi richiedere dalla gemma modernizr?

ruote dentate require righe devono essere nei commenti che precedono qualsiasi codice nel file, devono essere in un blocco di commenti prefatory iniziale. questo potrebbe farti ottenere?

o forse qualcos'altro che in realtà non è ciò che pensi che sia.

Io stesso non uso il coffeescript, qualcosa di strano con il coffeescript in qualche modo?

Problemi correlati