Почему Cloud Foundry не может загрузить mongo_mapper? - PullRequest
0 голосов
/ 03 июня 2011

Я загрузил простое тестовое приложение на 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).

Как решить эту проблему?

Ответы [ 2 ]

2 голосов
/ 11 июня 2011

У меня, как и у вас, были проблемы с требованием 'mongo_mapper' в облачной среде.Я решил свои проблемы, используя Bundler и Gemfile, как эта страница в cloudfoundry говорит нам.

Теперь у меня есть локальный гем "bundler", и я добавил этот Gemfile в кореньдерево приложений:

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

и вместо того, чтобы иметь требуемые строки в файле .rb, у меня есть только это:

Bundler.require

перед выполнением vmc push или update, вынужно выполнить это:

bundle package
bundle install

Я также сделал небольшое сообщение в блоге об этом .

0 голосов
/ 05 июня 2011
  1. Это может быть проблемой, но я настоятельно рекомендую использовать ту же версию Ruby в вашей среде разработки и в вашей рабочей среде. Чтобы упростить процесс, вы можете использовать RVM для установки Ruby 1.8 на вашу машину

  2. Вы делали «пакетную установку» в корне своего приложения? 'bundle install' ищет ваш Gemfile и устанавливает гемы. Обратите внимание, что если вы сгруппируете ваши драгоценные камни в группы, такие как 'development' и 'test', эти драгоценные камни не будут установлены на производстве.

...