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"

したがって、これが機能しない理由として、次の 2 つが考えられます。

  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 を使用して問題を解決しました。

「bundler」gem をローカルにインストールし、この Gemfile をアプリ ツリーのルートに追加しました。

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

そして、.rb ファイルに必要な行を含める代わりに、これしかありません。

Bundler.require

vmc pushまたはを実行する前にupdate、これを実行する必要があります。

bundle package
bundle install

また、それについての小さなブログ投稿も行いました。

于 2011-06-10T20:43:43.103 に答える
0
  1. 問題になる可能性がありますが、開発環境と本番環境で同じバージョンのRubyを使用することを強くお勧めします。簡単にするために、RVMを使用してマシンにRuby1.8をインストールできます

  2. アプリケーションのルートで「バンドルインストール」を実行しましたか?「バンドルインストール」はGemfileを検索し、gemをインストールします。ジェムを「開発」や「テスト」などのグループにグループ化すると、これらのジェムは本番環境にインストールされないことに注意してください。

于 2011-06-05T00:06:34.173 に答える