2011-06-03 69 views
0

我上傳了一個簡單的Ruby測試應用程序到Cloud Foundry在我的機器™上運行,但它在網站上給出了以下錯誤。爲什麼Cloud Foundry無法加載mongo_mapper?

====> 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的其他附加要求)。

這個問題怎麼解決?

回答

2

我和你一樣,在cloudfoundry上需要'mongo_mapper'時遇到了麻煩。我使用Bundler和Gemfile解決了我的問題,因爲cloudfoundry的this page告訴我們。

我現在已經「捆綁」寶石本地安裝,並在應用程序樹的根添加了這個的Gemfile:

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

,而不是具有需要在文件名爲.rb線條,我只有這個:

Bundler.require 

vmc pushupdate之前,您需要執行此:

bundle package 
bundle install 

我也做了一點blog post about it

+0

它擺脫了我的mongo_mapper錯誤;有其他奇怪的事情發生,但這肯定有助於這個問題:) – Jedidja 2011-06-18 00:52:54

0
  1. 這可能是一個問題,但我強烈建議在開發環境和生產環境中使用相同的Ruby版本。爲了簡單起見,您可以使用RVM在您的機器上安裝Ruby 1.8

  2. 您是否在應用程序的根目錄下執行「捆綁安裝」? 'bundle install'在您的Gemfile中查找並​​安裝寶石。請注意,如果您將您的寶石按「開發」和「測試」分組,那麼這些寶石將不會安裝在生產環境中。

+0

事實證明,你可以使CloudFoundry使用Ruby 1.9,所以我只是切換到。 – Jedidja 2011-07-12 19:29:02