gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 13:41:24 25 4
gpt4 key购买 nike

我希望能够将 jruby Rails 3.1 应用程序部署到 Heroku。

Heroku 现在支持 Java:http://blog.heroku.com/archives/2011/08/25/java/据说,应该可以部署 JRuby 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会崩溃。

为了运行命令

mvn package

我必须运行这个:

bundle --gemfile=/home/justin/github/sinatra-jruby-heroku/Jemfile install temple
bundle --gemfile=/home/justin/github/sinatra-jruby-heroku/Jemfile update

我创建了该应用程序:

heroku create jg1-sinatra --stack cedar

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

有什么建议吗?我猜用不了多久 Heroku 就会有这方面的教程。

来自 Heroku 的日志文件:

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

最佳答案

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

以这个Gemfile为例:

source "https://rubygems.org"

ruby "1.9.3"

gem "rails"
gem "puma"

最酷的一点是,Celadon Cedar 默认使用 Ruby 1.9.2。但是,当您在 Gemfile 中指定 ruby "1.9.3" 时,它实际上会为您的 Heroku 环境编译 Ruby 1.9.3。

现在,如果您想向 Heroku 环境添加不同的 Ruby 实现,您可以这样做:

source "https://rubygems.org"

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

gem "rails"
gem "puma"

现在,它将在部署时为您的 Heroku 应用程序安装并使用 Ruby 1.9 模式的 JRuby 1.7.0.preview1。它甚至还会在 Heroku 环境变量中定义正确的 JVM 选项。

最棒的是,它附带了官方Heroku buildpack ,因此无需切换到第 3 方构建包即可让 JRuby/JVM 在 Heroku 上运行。虽然我还没有让它工作,但是这个 should also work with Rubinius ,但我相信它目前已被窃听。要么是这样,要么我做错了。

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

关于heroku - 如何在 Heroku 上部署 JRuby Rails 3.1.x?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8209299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com