Rack gem, находящийся в тени, используя Apache2 и Passenger - PullRequest
3 голосов
/ 17 января 2012

Мы разворачиваем несколько приложений, используя Apache2 и Passenger (v3.0.9).App Foo - это приложение Rails 3.0.11, а панель приложений - приложение Rails 3.1.3.Оба приложения используют пакет для управления своими зависимостями.Исходя из моего понимания документации Passenger, Passenger и Bundler работают, как и ожидалось, для загрузки необходимых зависимостей для каждого приложения.Foo зависит от Rack 1.2.4, а Bar - от Rack 1.3.5.

Когда развертывается Bar и запускается установка пакета (через Capistrano), устанавливается Rack 1.3.5.И вдруг Foo получает следующую ошибку Пассажира:

Gem::LoadError - You have already activated rack 1.3.5, but your Gemfile requires rack 1.2.4. Using bundle exec may solve this.

Сообщение пытается быть полезным, но я не уверен, где именно следует запустить bundle exec.Я также попытался выполнить установку пакета --path vendor / cache, как рекомендовано в другом месте, но это, похоже, не помогло.

Я могу удалить Rack 1.3.5, но на риск Бар.И еще одно решение состоит в том, чтобы просто обновить Foo до Rails 3.1.x, но я хотел бы понять, что здесь происходит не так, так как, скорее всего, в будущем у нас будут приложения, работающие с разными версиями.

1 Ответ

0 голосов
/ 01 октября 2012

Я нахожусь в аналогичной ситуации: одно приложение Rails 3.0.11 и приложение Rails 3.2.8 в одном домене на одном сервере.

Использование Capistrano для развертывания.

В конфиге / deploy.rb у меня есть:

require 'bundler/capistrano'

во время "развертывания кэпа" запускается рецепт связки:

cd {app_path} / release / {release} && bundle install --gemfile {app_path} / Releases / {release} / Gemfile --path {app_path} / shared / bundle --deployment --quiet --without development тест

this (--path и --deployment) управляет хранилищем гемов для каждого приложения в

{APP_PATH} / общий / пучок / рубин / {ruby_version} / камни

поэтому в одном приложении Rail 3.0.11 у меня есть rack-1.2.4 и rails-3.0.11, в то время как в приложении 3.2.8 у меня есть rack-1.4.1 и rails-3.2.8. Оба набора драгоценных камней красиво отделены.

Возможно, вы сможете очистить эти хранилища гемсетов.

...