2008-09-24 6 views
11

Esencialmente, lo único que puedo implementar en mi máquina de implementación es un archivo JAR. No puedo instalar JRuby, ni puedo instalar Glassfish o Tomcat.¿Es posible compilar una aplicación Rails en un archivo Java VM JAR?

¿Es posible empaquetar una aplicación Rails (incluyendo rieles, vendored, por supuesto) a un archivo JAR de tal manera que yo puedo hacer

c:\my_server> java rails_app.jar 

y hacer que se ejecute WEBrick o mestizo dentro de la JVM?

+1

Usted va a necesitar JRuby a hacer eso por lo que yo puedo dígalo ... pero probablemente solo pueda incluir el jarro JRuby (no instalarlo). –

+1

¿Alguna vez lo hiciste funcionar? Estoy a punto de comenzar, pero si alguien más lo ha descubierto ... –

+0

No, se dio por vencido y optó por una solución que no sea de Ruby. –

Respuesta

6

Recomiendo que compruebe en Jetty. El proceso para Embedding Jetty es sorprendentemente fácil, y debería ser posible darle sus servlets desde su archivo jar actual. No he usado Ruby/Rails, así que no estoy seguro de si hay alguna complicación allí.

¿Normalmente es posible insertar todas sus plantillas/modelos de rieles en un contenedor dentro de un archivo war para su implementación en Tomcat? Si es así, entonces deberías poder incrustar Jetty para extraerlo de tu jar individual.

1

No creo que pueda ejecutar Mongrel dentro de la JVM. Intentar ejecutar un servidor web de cualquier tipo sin Tomcat o Jetty probablemente sea más problemático de lo que vale. La respuesta de jsight parece útil para ese problema. Si puede llegar tan lejos, aquí hay una página en el sitio de JRuby sobre cómo ejecutar JRuby on Rails in Tomcat.

9

Escribí un artículo hace un año sobre cómo insertar sus fuentes de ruby ​​con jruby y todo lo demás en un archivo jar, y luego ejecutarlo con "java -jar myapp.jar".

Necesitaré algo de trabajo para hacer que sea el inicio de los rieles, supongo, pero no debería ser demasiado difícil. Y con la documentación gratuita de jruby en su wiki, supongo que se puede ejecutar una tarea de embarcadero + guerra con bastante facilidad con esta técnica.

El artículo está aquí: http://blog.kesor.net/2007/08/14/jruby-in-a-jar/

1

es posible que desee para tratar de hacer esta pregunta en la lista de correo JRuby/foro (http://xircles.codehaus.org/lists/[email protected]).

Otro lugar que alguien hubiera hecho lo mismo es la lista de correo glassfish

Sin embargo, otra cosa que usted puede querer hacer es agrupar Winstone contenedor de servlets integrable Y jruby Y rieles y utilizar jarjar para crear un frasco grande. Es posible que pueda compilar un archivo de compilación ant para construir un jar tan GRANDE que también incluya su aplicación de rieles. Un proyecto que utilizó este enfoque es hudson (https://hudson.dev.java.net/). Puede obtener información sobre cómo hacerlo.

BR,
~ Un

+0

sugeriría usar un jar en lugar de jarjar, ya que jarjar explota jarras y comprime las clases. una jarra deja intactas las jarras. – Evgeny

3

Puede ser un poco anticuado, pero Nick Sieger, uno de los contribuidores de JRuby wrote about warbler hace un tiempo.

Warbler consiste en empaquetar una aplicación de Rails en un archivo .war. Ahora no soy un gran chico de Java, así que no estoy seguro de dónde viene tu restricción .jar. Los archivos war son similares a los jar pero son para sitios web completos o algo así.

En el peor de los casos, estoy seguro de que el JRuby wiki tiene algo sobre el estado del paquete de aplicaciones de Rails que se ejecutarán en las arquitecturas de Java. Lo mejor para ellos es tener información sobre eso.

Cuestiones relacionadas