首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Sinatra Jruby Heroku - jruby:没有这样的文件或目录--千里达(LoadError)

Sinatra Jruby Heroku - jruby:没有这样的文件或目录--千里达(LoadError)
EN

Stack Overflow用户
提问于 2012-01-31 19:37:41
回答 3查看 1.5K关注 0票数 3

我正在尝试运行这个应用程序: github.com/Soliah/sinatra-jruby-heroku.git

根据Heroku的发布说明,有一次更新是必要的:

http://devcenter.heroku.com/articles/release-note-java-2011-09-29

构建进行得很好,没有任何错误。下面是一些日志部分:

代码语言:javascript
复制
   [INFO] --- jruby-rake-plugin:1.6.3:jruby (install-bundler) @ jruby-heroku ---
   [INFO] Successfully installed bundler-1.0.21
   [INFO] 1 gem installed
   [INFO] 
   [INFO] --- jruby-rake-plugin:1.6.3:jruby (bundle-install) @ jruby-heroku ---
   [INFO] Fetching source index for http://rubygems.org/
   [INFO] Installing jruby-rack (1.0.10) 
   [INFO] Installing rack (1.3.2) 
   [INFO] Installing tilt (1.3.3) 
   [INFO] Installing sinatra (1.2.6) 
   [INFO] Installing trinidad_jars (1.0.1) 
   [INFO] Installing trinidad (1.2.3) 
   [INFO] Using bundler (1.0.21) 
   [INFO] Your bundle is complete! It was installed into ./vendor/bundle

   (...)

   [INFO] BUILD SUCCESS
   [INFO] ------------------------------------------------------------------------
   [INFO] Total time: 33.408s
   [INFO] Finished at: Tue Jan 31 10:58:03 UTC 2012
   [INFO] Final Memory: 9M/490M
   [INFO] ------------------------------------------------------------------------
  -----> Discovering process types
         Procfile declares types -> jruby, web
  -----> Compiled slug size is 18.6MB
  -----> Launching... done, v5
         http://jrubyandjava.herokuapp.com deployed to Heroku

但是当我访问部署的应用程序时。出现应用程序错误。

以下是包含错误的日志:

代码语言:javascript
复制
  $ heroku logs
  2012-01-31T10:57:21+00:00 heroku[slugc]: Slug compilation started
  2012-01-31T10:58:13+00:00 heroku[web.1]: State changed from created to starting
  2012-01-31T10:58:19+00:00 heroku[web.1]: Starting process with command `sh script/jruby -S trinidad -p 52233`
  2012-01-31T10:58:20+00:00 app[web.1]: Classpath is: :/app/etc:/app/target/dependency/jruby-complete.jar
  2012-01-31T10:58:21+00:00 app[web.1]: jruby: No such file or directory -- trinidad (LoadError)
  2012-01-31T10:58:23+00:00 heroku[web.1]: State changed from starting to crashed
  2012-01-31T10:58:23+00:00 heroku[web.1]: State changed from crashed to created
  2012-01-31T10:58:23+00:00 heroku[web.1]: State changed from created to starting
  2012-01-31T10:58:23+00:00 heroku[web.1]: Process exited
  2012-01-31T10:58:28+00:00 heroku[web.1]: Starting process with command `sh script/jruby -S trinidad -p 26224`
  2012-01-31T10:58:28+00:00 app[web.1]: Classpath is: :/app/etc:/app/target/dependency/jruby-complete.jar
  2012-01-31T10:58:31+00:00 app[web.1]: jruby: No such file or directory -- trinidad (LoadError)
  2012-01-31T10:58:32+00:00 heroku[web.1]: State changed from starting to crashed
  2012-01-31T10:58:33+00:00 heroku[web.1]: Process exited
  2012-01-31T10:58:33+00:00 heroku[router]: Error H10 (App crashed) -> GET jrubyandjava.herokuapp.com/ dyno= queue= wait= service= status=503 bytes=

看起来JRuby并没有找到宝藏。但我尝试了所有类型的配置(在script/jruby中,heroku config:add,Procfile等)。没有人工作。

还有一件事:这是实际的heroku配置输出(stack cedar)。

代码语言:javascript
复制
  $ heroku config
  DATABASE_URL        => postgres://kfgubrhars:mYBlJ2YKewqG7LwmPqVI@ec2-50-17-200-129.compute-1.amazonaws.com/kfgubrhars
  JAVA_OPTS           => -Xmx384m -Xss512k -XX:+UseCompressedOops
  MAVEN_OPTS          => -Xmx384m -Xss512k -XX:+UseCompressedOops
  PATH                => /usr/local/bin:/usr/bin:/bin
  SHARED_DATABASE_URL => postgres://kfgubrhars:mYBlJ2YKewqG7LwmPqVI@ec2-50-17-200-129.compute-1.amazonaws.com/kfgubrhars

下面是更新后的存储库:https://github.com/tomasmuller/sinatra-jruby-heroku

提前感谢!

EN

回答 3

Stack Overflow用户

发布于 2012-02-02 04:26:25

好的!我找到了解决方案。以下是步骤:

  • 将脚本/jruby中的GEM_HOME调整为:

GEM_HOME="$APPDIR"/vendor/bundle

  • Created脚本/包,ENV‘’GEM_HOME‘和ENV’‘GEM_PATH’指向'vendor/bundle‘目录。

  • 在pom.xml中调整了jruby-rake-plugin的执行:
票数 1
EN

Stack Overflow用户

发布于 2012-02-01 04:20:17

最近,get的安装位置发生了变化。launcher script/jruby期望gem在.gems中,但看起来现在已经更改为vender/bundle

请尝试将行https://github.com/tomasmuller/sinatra-jruby-heroku/blob/master/script/jruby#L94改为export GEM_HOME="$APPDIR"/vender/bundle

我一直想用这些变化更新我的博客帖子,但还没来得及去做。

票数 0
EN

Stack Overflow用户

发布于 2012-09-16 20:15:47

这样做的好处是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将确保环境准备就绪。

不再需要使用变通方法或使用使用此方法的第三方构建包。也不再需要创建一个hacky Jemfile。取而代之的是,只要像平时一样做所有的事情,保留Gemfile,不要使用第三方构建包,只需通过ruby方法在Gemfile中定义Ruby实现/运行时,Heroku就会处理这些事情。

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

https://stackoverflow.com/questions/9078871

复制
相关文章

相似问题

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