繁体   English   中英

无法使用 RJB gem 将应用程序部署到 Heroku

[英]Can't deploy to Heroku the app with RJB gem

我已经设置了 JAVA_HOME 变量

heroku config:add JAVA_HOME=/usr/lib/jvm/java-6-openjdk

检查 heroku 配置是否显示此变量的值,然后推送:

git push heroku master

并且仍然得到

JAVA_HOME is not set

捆绑程序安装 RJB gem 时出错。

我可以将相同的源成功部署到另一个 Heroku 应用程序,并且所有环境变量都相同。

怎么了?

我有同样的问题,如果其他人想知道,这就是Heroku告诉我的:

默认情况下,编译应用程序时,配置变量不可用 - 仅在运行时。

您可以通过确保安装最新的heroku gem来更改此设置,然后启用user_env_compile lab标志

$ heroku labs:启用user-env-compile

这将使gem安装时可以使用JAVA_HOME,希望能让你解决这个问题。

首先通过使用找到JAVA_HOME PATH,

heroku run 'which java |xargs  readlink -f  | sed "s:bin/java::"'

它会回报你,

usr/lib/jvm/java-6-openjdk/jre

现在使用它来了解heroku上的JAVA_HOME路径。 现在在heroku和Gemfile中设置JAVA_HOME路径

在heroku cli上:

heroku config:add JAVA_HOME=/usr/lib/jvm/java-6-openjdk

在Gemfile上面:

java_home = '/usr/lib/jvm/java-6-openjdk'
ENV['JAVA_HOME'] = java_home if Dir.exist?(java_home)

通过在我的Gemfile中添加以下内容,让Heroku安装依赖于$ JAVA_HOME的gem:

# set JAVA_HOME so Heroku will install gems that need it
heroku_java_home = '/usr/lib/jvm/java-6-openjdk'
ENV['JAVA_HOME'] = heroku_java_home if Dir.exist?(heroku_java_home)

您是否尝试将应用程序部署到其他堆栈?

我做了一点搜索,这似乎符合你的解释。 https://github.com/carlhuda/bundler/issues/1742

可能是你的报道,不是吗?

我建议你联系Heroku并让他们调查一下。

看起来它缺少可能在您当前堆栈上不可用的依赖项。

从heroku cedar-14迁移到heroku-16或heroku-18

$ heroku config:unset JAVA_HOME #remove JAVA_HOME env if exists
$ heroku stack:set heroku-18
$ heroku buildpacks:add --index 1 heroku/jvm
$ git push heroku master

要部署到heroku-20堆栈,请确保按此顺序添加以下构建包:

heroku buildpacks:add heroku/jvm
heroku buildpacks:add heroku/ruby

您不需要使用heroku-20手动设置JAVA_HOME Heroku 也不会为您设置。 安装rjb时,该变量已在内部可用。

您的最终结果应如下所示:

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM