Rails 3: Пассажир не может найти git gems, установленные компоновщиком - PullRequest
46 голосов
/ 31 августа 2010

Rails 3.0.0, Passenger 2.2.15:

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

git: //github.com/lmumar/paperclip.git (на rails3) не проверен. Пожалуйста, запустите bundle install (Bundler :: GitError)

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

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

Есть подсказки?

Ответы [ 6 ]

70 голосов
/ 15 февраля 2011

Я имел обыкновение иметь эту проблему, решить с помощью

bundle --deployment

Который установит драгоценные камни в вендор / комплект

22 голосов
/ 31 августа 2010

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

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

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

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

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

8 голосов
/ 08 апреля 2011

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

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

SetEnv GEM_HOME /Users/bob/.bundle

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

4 голосов
/ 27 февраля 2012

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

require 'bundler/setup'
0 голосов
/ 21 сентября 2018

Я установил пассажирский гем и его модуль apache как пользователь sudo, и это была проблема в моем случае.

Причиной, по которой я изначально использовал sudo, было то, что я скопировал код из эпизода railscasts 122. Установка его без доступа sodu решила эту проблему.Поскольку Ruby был установлен с использованием rvm без доступа sudo в моей системе.

0 голосов
/ 17 июля 2013

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

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

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

usermod -a -G rvm apache

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

...