12

本质上,我唯一可以部署到我的部署机器的是一个 JAR 文件。我无法安装 JRuby,也无法安装 Glassfish 或 Tomcat。

是否可以将 Rails 应用程序(包括 Rails,当然是供应商的)打包到 JAR 文件中,这样我就可以做到

c:\my_server> java rails_app.jar

并让它在 JVM 中运行 WEBRick 或 Mongrel?

4

6 回答 6

9

一年前我写了一篇关于如何将你的 ruby​​ 源代码与 jruby 以及你想要的所有其他内容嵌入到一个 jar 文件中的文章,然后使用“java -jar myapp.jar”运行它。

我猜它需要一些工作才能使其启动轨道,但它不应该太难。借助他们 wiki 上的免费 jruby 文档,我想您可以使用这种技术相当轻松地运行 jetty+war。

文章在这里: http ://blog.kesor.net/2007/08/14/jruby-in-a-jar/

于 2008-09-24T19:25:58.503 回答
6

我建议您检查 Jetty。Embedding Jetty的过程非常简单,应该可以从当前的 jar 文件中为其提供 servlet。不过,我没有使用过 Ruby/Rails,所以我不确定那里是否有任何并发​​症。

通常是否可以将所有 rails 模板/模型嵌入到 war 文件中的 jar 中以在 Tomcat 上部署?如果是这样,那么您应该能够让嵌入式 Jetty 从您的单个 jar 中拉出它。

于 2008-09-24T18:56:10.400 回答
3

它可能有点过时,但 JRuby 的贡献者之一 Nick Sieger不久前写过有关莺的文章。

Warbler是将 Rails 应用程序打包到 .war 文件中。现在我不是 Java 大佬,所以我不确定你的 .jar 限制来自哪里。war 文件类似于 jars,但它们适用于整个网站或其他东西。

最坏的情况,我很确定JRuby wiki有一些关于打包 Rails 应用程序以在 Java 架构上运行的状态。了解这方面的信息符合他们的最大利益。

于 2008-09-25T02:32:07.043 回答
1

我不认为你可以在 JVM 中运行 Mongrel。尝试在没有 Tomcat 或 Jetty 的情况下运行任何类型的网络服务器可能比它的价值要麻烦得多。jsight的答案看起来对这个问题很有帮助。如果你能做到这一点,这里是 JRuby 网站上关于在 Tomcat 中运行 JRuby on Rails的页面。

于 2008-09-24T19:10:53.500 回答
1

您可能想尝试在 JRuby 邮件列表/论坛(http://xircles.codehaus.org/lists/user@jruby.codehaus.org)上提出这个问题。

另一个有人会做同样事情的地方是 glassfish 邮件列表

你可能想做的另一件事是捆绑winstone可嵌入servlet容器和jruby和rails,并使用jarjar创建一个大jar。您也许可以构建一个 ant 构建文件来构建这样一个 BIG jar,其中还包含您的 rails 应用程序。使用这种方法的一个项目是 hudson ( https://hudson.dev.java.net/ )——你可能会得到一些关于如何去做的信息。

BR,
~A

于 2008-09-24T20:14:17.077 回答
0

我今天刚看到这个博客,我打算试一试,如果有其他人告诉我

http://matthewkwilliams.com/index.php/2010/03/02/rails-jruby-in-a-jar/

于 2010-10-07T02:29:56.573 回答