2012-04-12 6 views
6

Estoy intentando construir un motor Rails de "administración". Supongamos que el motor tiene los siguientes activos:Sobrecarga de activos en motores Rails: requiere que falle un archivo de activos de gema secundario

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

Cuando el admin.js.coffee está requiriendo admin_customizations.js.coffee, es decir, un archivo vacío listo para ser sobrescrita por la aplicación Rails hospedaje.

[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! 

Todo funciona de maravilla, hasta que intento para requerir algunos activos procedentes de una joya secundaria:

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

La gema modernizr-rails es una dependencia de la aplicación de alojamiento en lugar del motor. Tenga en cuenta que si trato de requerir modernizr de un archivo de activos que no sea una anulación de algún archivo de activo del motor, todo funciona nuevamente.

¿Hay alguna manera de arreglar esta situación?

+0

¿Hay alguna ventaja en el archivo de anulación? Quiero decir, el desarrollador solo puede agregar su propio js. – thomasfedb

+0

podría estar relacionado con http://stackoverflow.com/questions/18261116/how-to-change-the-order-that-gems-are-loaded-from-withinone-of-the-gems – montrealmike

Respuesta

0

Creo que he hecho exactamente lo que describes sin tener el problema que dices que tienes.

¿Seguro que no hay nada más? La línea solicitada que obtiene ignorada no tiene mucho sentido: los piñones deben incluir el archivo requerido o subirlo si no puede encontrarlo. Simplemente no hacer nada en silencio no parece correcto.

Es posible que esté desencadenando un error en los piñones o en el uso de la tubería de activos de los rieles, pero lo más probable es que esté sucediendo algo más.

¿Seguro que no ha proporcionado accidentalmente su propio archivo en blanco 'modernizr.js` en la aplicación y/o motor local, anulando accidentalmente el que quiere que requiera la gema modernizr?

piñones require líneas deben estar en los comentarios que preceden a cualquier código en el archivo, tienen que estar en un bloque inicial de comentario preliminar. podría ser eso?

o tal vez algo más que no es realmente lo que piensas que es.

Actualmente no uso coffeescript, algo raro con coffeescript de alguna manera?

Cuestiones relacionadas