0

我已经将一个简单的 Ruby 测试应用程序上传到在我的机器上运行Cloud Foundry ™,但它在网站上给出了以下错误。

====> logs/stderr.log <====

/var/vcap/data/packages/dea_ruby18/3.1/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `gem_original_require': no such file to load -- mongo_mapper (LoadError)
    from /var/vcap/data/packages/dea_ruby18/3.1/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:36:in `require'
    from recall.rb:2

我注意到您需要在我的根目录中拥有一个 Gemfile,但我不确定它是否被服务器使用。

source "http://rubygems.org"
gem "mongo_mapper"
gem "bson_ext"

所以我猜这不起作用有两个可能的原因:

  1. 我正在运行 Ruby 1.9,Cloud Foundry 有 1.8,有什么不同吗?(我尝试将 'require 'rubygems'' 行添加到我的文件中,但没有区别)
  2. 我的 Gemfile 格式错误(或者还有其他一些附加要求来指定从何处获取 mongo_mapper gem)。

如何解决这个问题?

4

2 回答 2

2

我和你一样,在 cloudfoundry 上需要 'mongo_mapper' 时遇到了麻烦。正如 cloudfoundry 的这个页面告诉我们的那样,我使用 Bundler 和 Gemfile 解决了我的问题。

我现在在本地安装了“捆绑器”gem,并在应用树的根目录添加了这个 Gemfile:

source "http://rubygems.org"
gem 'sinatra'
gem 'json'
gem 'mongo'
gem 'mongo_mapper'

而不是 .rb 文件中的要求行,我只有这个:

Bundler.require

在执行vmc pushor之前update,您需要执行以下操作:

bundle package
bundle install

我还写了一篇关于它的小博文

于 2011-06-10T20:43:43.103 回答
0
  1. 这可能是个问题,但我强烈建议在您的开发环境和生产环境中使用相同的 Ruby 版本。为方便起见,您可以使用RVM在您的机器上安装 Ruby 1.8

  2. 您是否在应用程序的根目录中进行了“捆绑安装”?'bundle install' 在你的 Gemfile 中查找并安装 gems。请注意,如果您将 gem 分组为“开发”和“测试”等组,这些 gem 将不会安装在生产环境中。

于 2011-06-05T00:06:34.173 回答