本质上,我唯一可以部署到我的部署机器的是一个 JAR 文件。我无法安装 JRuby,也无法安装 Glassfish 或 Tomcat。
是否可以将 Rails 应用程序(包括 Rails,当然是供应商的)打包到 JAR 文件中,这样我就可以做到
c:\my_server> java rails_app.jar
并让它在 JVM 中运行 WEBRick 或 Mongrel?
本质上,我唯一可以部署到我的部署机器的是一个 JAR 文件。我无法安装 JRuby,也无法安装 Glassfish 或 Tomcat。
是否可以将 Rails 应用程序(包括 Rails,当然是供应商的)打包到 JAR 文件中,这样我就可以做到
c:\my_server> java rails_app.jar
并让它在 JVM 中运行 WEBRick 或 Mongrel?
一年前我写了一篇关于如何将你的 ruby 源代码与 jruby 以及你想要的所有其他内容嵌入到一个 jar 文件中的文章,然后使用“java -jar myapp.jar”运行它。
我猜它需要一些工作才能使其启动轨道,但它不应该太难。借助他们 wiki 上的免费 jruby 文档,我想您可以使用这种技术相当轻松地运行 jetty+war。
我建议您检查 Jetty。Embedding Jetty的过程非常简单,应该可以从当前的 jar 文件中为其提供 servlet。不过,我没有使用过 Ruby/Rails,所以我不确定那里是否有任何并发症。
通常是否可以将所有 rails 模板/模型嵌入到 war 文件中的 jar 中以在 Tomcat 上部署?如果是这样,那么您应该能够让嵌入式 Jetty 从您的单个 jar 中拉出它。
它可能有点过时,但 JRuby 的贡献者之一 Nick Sieger不久前写过有关莺的文章。
Warbler是将 Rails 应用程序打包到 .war 文件中。现在我不是 Java 大佬,所以我不确定你的 .jar 限制来自哪里。war 文件类似于 jars,但它们适用于整个网站或其他东西。
最坏的情况,我很确定JRuby wiki有一些关于打包 Rails 应用程序以在 Java 架构上运行的状态。了解这方面的信息符合他们的最大利益。
我不认为你可以在 JVM 中运行 Mongrel。尝试在没有 Tomcat 或 Jetty 的情况下运行任何类型的网络服务器可能比它的价值要麻烦得多。jsight的答案看起来对这个问题很有帮助。如果你能做到这一点,这里是 JRuby 网站上关于在 Tomcat 中运行 JRuby on Rails的页面。
您可能想尝试在 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
我今天刚看到这个博客,我打算试一试,如果有其他人告诉我
http://matthewkwilliams.com/index.php/2010/03/02/rails-jruby-in-a-jar/