首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Heroku上部署JRuby Rails 3.1.x?

如何在Heroku上部署JRuby Rails 3.1.x?
EN

Stack Overflow用户
提问于 2011-11-21 16:53:58
回答 3查看 1.7K关注 0票数 5

我希望能够向Heroku提供jruby rails 3.1应用程序。

JRuby现在支持Java:http://blog.heroku.com/archives/2011/08/25/java/,应该可以部署Heroku rails应用程序。这里有一个关于普通java的教程:http://devcenter.heroku.com/articles/java,还有一个教程:http://devcenter.heroku.com/articles/spring-mvc-hibernate

这里有一个heroku上的jruby Sinatra应用的教程:http://chris.chowie.net/2011/08/28/Sinatra-with-JRuby-on-Heroku/为了让它工作,我在运行heroku时使用了非JRuby ruby,因为如果rvm使用jruby,heroku就会崩溃。

为了运行该命令

代码语言:javascript
复制
mvn package

我不得不运行以下命令:

代码语言:javascript
复制
bundle --gemfile=/home/justin/github/sinatra-jruby-heroku/Jemfile install temple
bundle --gemfile=/home/justin/github/sinatra-jruby-heroku/Jemfile update

我创建了这个应用:

代码语言:javascript
复制
heroku create jg1-sinatra --stack cedar

我将文件推送到heroku,但当应用程序启动时,它崩溃了。:(

有什么建议吗?我猜Heroku很快就会有关于这方面的教程。

来自Heroku的日志文件:

代码语言:javascript
复制
2011-11-21T08:30:40+00:00 heroku[slugc]: Slug compilation started
2011-11-21T08:31:17+00:00 heroku[api]: Deploy 3bccec5 by justin.gordon@gmail.com
2011-11-21T08:31:17+00:00 heroku[api]: Release v7 created by justin.gordon@gmail.com
2011-11-21T08:31:18+00:00 heroku[web.1]: State changed from crashed to created
2011-11-21T08:31:18+00:00 heroku[slugc]: Slug compilation finished
2011-11-21T08:31:20+00:00 heroku[web.1]: Starting process with command `sh script/jruby -S trinidad -p 17687`
2011-11-21T08:31:20+00:00 app[web.1]: Classpath is: :/app/etc:/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar
2011-11-21T08:31:20+00:00 app[web.1]: Exception in thread "main" java.lang.NoClassDefFoundError: org/jruby/Main
2011-11-21T08:31:20+00:00 app[web.1]: Caused by: java.lang.ClassNotFoundException: org.jruby.Main
2011-11-21T08:31:20+00:00 app[web.1]:   at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
2011-11-21T08:31:20+00:00 app[web.1]:   at java.security.AccessController.doPrivileged(Native Method)
2011-11-21T08:31:20+00:00 app[web.1]:   at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
2011-11-21T08:31:20+00:00 app[web.1]:   at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
2011-11-21T08:31:20+00:00 app[web.1]:   at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
2011-11-21T08:31:20+00:00 app[web.1]:   at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
2011-11-21T08:31:20+00:00 app[web.1]: Could not find the main class: org.jruby.Main. Program will exit.
2011-11-21T08:31:20+00:00 heroku[web.1]: Process exited
2011-11-21T08:31:21+00:00 heroku[web.1]: State changed from starting to crashed
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-12-22 19:01:07

你有这行代码:

代码语言:javascript
复制
Classpath is: :/app/etc:/.m2/repository/org/jruby/jruby-complete/1.6.3/jruby-complete-1.6.3.jar

假设你在某个地方引用了你的locale代码库,而corse的Heroku却没有。我不太了解包装,但是这里可能会出现这个参考资料吗?

检查所有的参考,看看包装选项可能是一个好的开始…

票数 2
EN

Stack Overflow用户

发布于 2012-09-16 20:00:53

从Bundler1.2开始,您现在可以在Gemfile中使用specify the Ruby implementation and version。这样做的好处是Heroku将理解这些设置,并为您的环境准备Heroku应用程序。

以下面的Gemfile为例:

代码语言:javascript
复制
source "https://rubygems.org"

ruby "1.9.3"

gem "rails"
gem "puma"

很酷的是,Celadon Cedar默认使用Ruby 1.9.2。但是,当您在Gemfile中指定Ruby1.9.3时,它实际上会为您的Heroku环境编译Ruby1.9.3。

现在,如果你想在你的Heroku环境中添加一个不同的Ruby实现,你可以这样做:

代码语言:javascript
复制
source "https://rubygems.org"

ruby "1.9.3", :engine => "jruby", :engine_version => "1.7.0.preview1"

gem "rails"
gem "puma"

现在,它将在部署时以Ruby1.9模式为您的JRuby应用程序安装和使用Heroku1.7.0.preview1。它甚至还会在Heroku环境变量中定义适当的JVM选项。

最棒的是,它附带了官方的Heroku buildpack,所以没有必要切换到第三方构建包来让JRuby/JVM在Heroku上运行。虽然我还没有让它工作,这个should also work with Rubinius,但我相信它目前是错误的。要么这样,要么我做错了。

在我看来,这是一个很棒的、可伸缩的特性。只需定义您在Gemfile中使用的Ruby实现/版本/模式以及其他依赖项,Heroku将确保环境准备就绪。

票数 4
EN

Stack Overflow用户

发布于 2012-08-25 07:53:05

以前在Heroku上获取JRuby和其他不受支持的运行时的黑客攻击现在已经过时了,因为有了第三方构建包:

https://devcenter.heroku.com/articles/buildpacks https://github.com/jruby/heroku-buildpack-jruby

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8209299

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档