Зависимость от пассажира? - PullRequest
1 голос
/ 05 марта 2012

Мое приложение отлично работает в монгрел (локально), но внезапно Apache с пассажиром доставляет мне проблемы. Это работало нормально, но теперь я получаю эту ошибку, которую мне пока не удалось устранить:

Could not find multi_json-1.1.0 in any of the sources (Bundler::GemNotFound)

Мой Gemfile:

source 'http://rubygems.org'

gem 'rails'
gem 'mysql2'
gem 'tzinfo'

gem 'jquery-rails'
gem 'kaminari'
gem 'cancan'

# active-admin dependencies
gem 'activeadmin'
gem 'sass-rails'
gem "meta_search",    '>= 1.1.0.pre'

gem 'sorcery'

group :assets do
    gem "coffee-script"
    gem "twitter-bootstrap-rails"
end

Есть идеи?

РЕДАКТИРОВАТЬ:

хм, я заметил в своем пути к драгоценным камням, что единственный драгоценный камень там - "multi_json-1.0.4", который отличается от запрашиваемого им multi_json-1.1.0. Тем не менее, при запуске «bundle» я вижу «Использование multi_json (1.1.0)». Но я нигде не могу найти драгоценный камень (как и пассажир, как кажется).

Ответы [ 2 ]

3 голосов
/ 08 марта 2012

Обнаружил и решил ту же проблему после обновления Ruby с 1.9.2p29- до 1.9.3.Я использую NGINX, а не Apache, но вот комбинированное решение:

  1. Только NGINX (Apache загружает пассажира динамически): пересоберите NGINX с Passenger после установки Ruby 1.9.3.
  2. В файле конфигурации веб-сервера обновите назначения root и ruby ​​Пассажира, указав правильную версию ruby.

NGINX.conf - в блоке http {}:

http {
   ...
   passenger_root /Users/myusername/.rvm/gems/ruby-1.9.3-p0/gems/passenger-3.0.11;
   passenger_ruby /Users/myusername/.rvm/wrappers/ruby-1.9.3-p0/ruby;
   ...
} 

Или,в httpd.conf Apache:

PassengerRoot /Users/myusername/.rvm/gems/ruby-1.9.3-p0/gems/passenger-3.0.11
PassengerRuby /Users/myusername/.rvm/wrappers/ruby-1.9.3-p0/ruby

Кроме того, восстановите приложение (пакетное обновление).

Надеюсь, что это работает для вас.

Re некоторые другие вопросы, опубликованныев ответ.

  • файл gem существует.Пакетное шоу: ~ / .rvm / gems / ruby-1.9.3-p0 / gems / multi_json-1.1.0
  • multi_json является зависимостью от Passenger, а не от приложения, поэтому никакого эффекта / не требуется в gemfile.
  • gemfile.lock не имеет значения по вышеуказанной причине;обновление пакета не имеет никакого эффекта
1 голос
/ 05 марта 2012

Обычно я использую головную боль такого типа, добавляя драгоценные камни непосредственно в свои репозитории. Предостережение заключается в том, что ваш репозиторий растет, но я считаю, что меньше боли, чем зависеть от гем-серверов.

bundle pack
git add vendor/cache
git commit

Затем установите гемы во время развертывания с флагом развертывания

bundle install --deployment
...