2009-12-04 13 views
9

Tengo un ruby ​​web app que usa lilypond para generar partituras en base a las entradas del usuario. Me gustaría trasladar el hosting al heroku (recientemente he usado heroku en algunos proyectos y realmente me ha gustado, además de que mi tráfico es lo suficientemente bajo como para que sea libre de alojarlo en heroku, al menos por un tiempo). Sin embargo, la arquitectura de dinamo de heroku no te permite instalar e instalar los paquetes que quieras ... en su lugar, le das un manifiesto de gemas e instalará las gemas por ti.Empaquetado de binarios precompilados dentro de una gema

Por lo tanto, si voy a implementar a heroku, voy a necesitar empaquetar lilypond como una gema. He lanzado algunas gemas de rubíes puros, pero no he tratado con extensiones nativas o binarios precompilados ni nada de eso.

¿Es posible tomar algunos binarios precompilados y empaquetarlos dentro de una gema? Idealmente, esto incluiría binarios para OS X (que desarrollo en) y debian linux (que es lo que se ejecuta en heroku), e instalaría el binario apropiado cuando se instaló la gema.

Respuesta

1

En lugar de precompilación, usted debería ser capaz de enumerar simplemente la joya en su archivo .gems, ver el Heroku documentation. Por supuesto, esto requiere que tu joya construya el código nativo correctamente, esto todavía es una tarea, pero con suerte una más fácil.

1

creo que tienes algunas opciones aquí:

Usted podría conseguir el Lilypond source y empaquetarlo en una joya con una extensión C nativo. Hay algunas guías útiles sobre cómo hacer que en http://guides.rubygems.org/c-extensions/ y http://patshaughnessy.net/2011/10/31/dont-be-terrified-of-building-native-extensions

También hay una gema llamada gitara pero no he podido encontrar ninguna información acerca de su uso en Heroku. Puede valer la pena enviar un correo electrónico al autor y preguntarle si sabe algo al respecto.

Puede crear un Heroku buildpack que instale Lilypond como parte de su implementación. No pude encontrar ninguno para Lilypond, pero hay muchos ejemplos que hacen cosas similares: por ejemplo, this one instala Imagemagick (que está incluido de manera predeterminada en Heroku, por lo que probablemente ya no sea necesario) pero espero que el código sea útil) . Más documentación en https://devcenter.heroku.com/articles/buildpack-api y https://devcenter.heroku.com/articles/buildpack-binaries

Con base en mi lectura, me pensar la opción buildpack es el mejor camino a seguir.

¡Espero que esto ayude!

Cuestiones relacionadas