Рельсы 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
.
Любые подсказки?
Ответы
Ответ 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 развернулась в "поставщик/пакет".