Openshift无法找到宝石

时间:2014-03-11 20:02:54

标签: ruby gem rake openshift gemfile.lock

我正在尝试将一个简单的应用程序部署到包含“Ruby 1.9”和“PostgreSQL 9.2”软件包的设备上。部署似乎成功。当我将浏览器指向服务器时,我得到一个Passenger“Ruby(Rack)应用程序无法启动”,并显示错误消息“无法在任何源(Bundler :: GemNotFound)中找到rake-0.9.6”。 Ssh和“宝石安装”并没有帮助(宝石已经安装,但不是乘客可以找到的地方 - 我无法将其移动到乘客想要的地方,因为我没有root权限)。根据{{​​3}},需要在我的Gemfile.lock中指定gem。我这样做了,但没有用。这是我的config.ru:

  require 'rubygems' 
  require 'bundler'
  $LOAD_PATH << './lib'
  ENV['DATABASE_URL'] = "#{ENV['OPENSHIFT_POSTGRESQL_DB_URL']}/phone_book"
  Bundler.require
  require 'phone_book/controllers'
  Ramaze.start(:root => Ramaze.options.roots, :started => true)
  run Ramaze

这是我的Bundle.lock:

  GEM
    remote: https://anybody:password@some.gem.server.com/
    remote: https://rubygems.org/
    specs:
      daemons (1.1.9)
      eventmachine (1.0.3)
      haml (4.0.4)
        tilt
      haml-contrib (1.0.0.1)
        haml (>= 3.2.0.alpha.13)
      innate (2012.03)
        rack (~> 1.4.1)
      mysql2 (0.3.15)
      pg (0.17.1)
      phone_book (0.0.0)
        haml (= 4.0.4)
        haml-contrib (~> 1.0.0)
        innate (= 2012.03)
        mysql2 (~> 0.3)
        pg (~> 0.17)
        rack (= 1.4.5)
        rake (= 0.9.6)
        ramaze (= 2012.04.14)
        sass (~> 3.3)
        sequel (~> 4.8)
        sqlite3 (~> 1.3.9)
        thin (~> 1.2)
      rack (1.4.5)
      rake (0.9.6)
      ramaze (2012.04.14)
        innate (>= 2012.03)
      sass (3.3.0)
        rake
      sequel (4.8.0)
      sqlite3 (1.3.9)
      thin (1.6.2)
        daemons (>= 1.0.9)
        eventmachine (>= 1.0.0)
        rack (>= 1.0.0)
      tilt (2.0.0)

  PLATFORMS
    ruby

  DEPENDENCIES
    phone_book (~> 0.0)

当我通过'rackup'在我的笔记本电脑上启动它时,此示例正常工作。我也可以把它部署到Dokku。代码没有明确引用Thin(这就是我想要使用的,但我不介意Passenger)。

我还尝试使用“高级Ruby盒式磁带”,并指定Thin(“rhc env set OPENSHIFT_RUBY_SERVER = thin -a app_name”)。这一次,推送结果为“CLIENT_ERROR:执行失败:'控制构建'”,对“--trace”(“gem push”不接受)提出了无益的建议。 ssh执行“gear postreceive --trace”似乎挂起(在OS X上),直到我按下一个键,然后我得到一个客户端堆栈跟踪。当我从控制台重新启动应用程序时,我得到“无法完成所请求的操作”,并且“[31mbundler:command not found:thin start -C ...”。这很奇怪,看起来Thin应该包含在这个墨盒中。无论如何,我确实在Gemfile.lock中指定了它(见上文),所以我再次看到我在Gemfile.lock中指定的gem没有被看到。

0 个答案:

没有答案