Подтвердить что ты не робот

Рельсы 3: Пассажир не может найти git драгоценные камни, установленные поставщиком

Rails 3.0.0, Пассажир 2.2.15:

  • Создайте новый проект Rails
  • Добавить gem 'paperclip', :git => 'git://github.com/lmumar/paperclip.git', :branch => 'rails3' к вашему Gemfile
  • Do bundle install
  • Все в порядке, начиная с rails/script server и доступ также работает
  • Однако при доступе с помощью Пассажира он говорит:

git://github.com/lmumar/paperclip.git(на rails3) не проверяется. Запустите bundle install (Bundler:: GitError)

Я пробовал bundler pack (не помогает) и установил BUNDER_HOME в ~/.bundler(там, где установлен Paperclip git, там bundler install) в .htaccess и в разных местах config/*. rb, но это тоже не удалось.

~/.bundler принадлежит тому же пользователю, что и проект Rails (Пассажир работает под этим пользователем), поэтому он не может быть проблемой разрешения. sudo устанавливается и вызывается bundle install.

Любые подсказки?

4b9b3361

Ответ 1

Решение (заняло у меня несколько часов):

Убедитесь, что RAILS_ROOT/.bundle/config (SetEnv и т.д. не работает для меня) содержит:

--- 
BUNDLE_PATH: /home/xxxxx/.bundler

Примечание BUNDLE_PATH, а не BUNDLER_PATH! Также была запись DISABLED_SHARED_GEMS = 1, я удалил ее.

Затем пучок распознает правильный путь, даже если он загружен из Пассажира. Без Пассажира он всегда работал (и использовал /home/xxxxx/.bundler, как сказано в вопросе)

Ответ 2

Я использовал эту проблему, разрешив использование

bundle --deployment

Что будет устанавливать драгоценные камни в поставщике/комплекте

Ответ 3

Вы можете использовать bundle install --path vendor/bundle для установки драгоценных камней локально, а не в системные драгоценные камни.

Если вы хотите продолжать использовать системные драгоценные камни, то это всего лишь одна строка в вашей конфигурации Apache, чтобы сообщить пассажиру, где найти ваши системные драгоценные камни:

SetEnv GEM_HOME /Users/bob/.bundle

В моем блоге немного более сложная запись в Использование Пассажира с набором GEM_HOME

Ответ 4

Я столкнулся с этой проблемой при написании приложения Sinatra. Чтобы решить эту проблему, я добавил эту строку в config.ru.

require 'bundler/setup'

Ответ 5

У меня была такая же проблема, и это было связано с проблемой прав с RVM.

Пользователь, который запускает веб-сервер, не может проверить, доступен ли GIT gem. Как "Пассажир", использующий веб-пользователя для запуска, он не может выполнить эту проверку.

Решение, которое я нашел, это добавить пользователя в группу rvm:

usermod -a -G rvm apache

Я надеюсь, что это поможет некоторым другим людям, которые не хотят, чтобы GEM развернулась в "поставщик/пакет".