ruby on rails - start - Rails 3: El pasajero no puede encontrar gemas git instaladas por bundler
stop passenger (5)
Me encontré con este problema mientras escribía una aplicación Sinatra. Para resolverlo agregué esta línea a config.ru .
require ''bundler/setup''
Rails 3.0.0, Pasajero 2.2.15:
- Crea un nuevo proyecto de Rails
- Agrega
gem ''paperclip'', :git => ''git://github.com/lmumar/paperclip.git'', :branch => ''rails3''
a tu Gemfile - Hacer
bundle install
- Todo está bien, comenzar con
rails/script server
y acceder también funciona - Sin embargo, al acceder con Passenger, dice:
git: //github.com/lmumar/paperclip.git (en rails3) no está desprotegido. Ejecute la bundle install
(Bundler :: GitError)
He probado el bundler pack
(no ayuda) y establezco BUNDER_HOME en ~ / .bundler (el Paperclip git se instala allí mediante la bundler install
) en .htaccess y varios lugares en config / *. Rb, pero esto no fue exitoso , también.
~ / .bundler es propiedad del mismo usuario que el proyecto Rails (el pasajero se ejecuta con este usuario), por lo que no puede ser un problema de permiso. sudo es instalado y llamado por bundle install
.
¿Algún consejo?
Puede usar bundle install --path vendor/bundle
para instalar las gemas localmente, en lugar de gems del sistema.
Sin embargo, si desea seguir usando las gemas del sistema, es solo una línea en su configuración de Apache para decirle a Passenger dónde encontrar las gemas de su sistema:
SetEnv GEM_HOME /Users/bob/.bundle
Hay un texto un poco más elaborado en mi blog en el uso de Passenger con GEM_HOME conjunto
Solía tener este problema, resolver usando
bundle --deployment
Que instalará las gemas en proveedor / paquete
Solución (me tomó unas horas):
Mare sure que RAILS_ROOT/.bundle/config
(SetEnv etc. no funcionó para mí) contiene:
---
BUNDLE_PATH: /home/xxxxx/.bundler
Tenga en cuenta BUNDLE_PATH, no BUNDLER_PATH! También había una entrada DISABLED_SHARED_GEMS = 1, la eliminé.
Entonces, bundler reconoce la ruta correcta incluso cuando se carga desde Passenger. Sin pasajero, siempre funcionó (y usó /home/xxxxx/.bundler, como se dijo en la pregunta)
Tuve el mismo problema y fue debido a un problema de derechos con RVM.
El usuario que ejecuta el servidor web no puede verificar si la gema GIT está disponible. Como "Pasajero" que utiliza el usuario web para ejecutar, no puede hacer esta comprobación.
La solución que encontré fue agregar usuario web al grupo rvm:
usermod -a -G rvm apache
Espero que esto ayude a otras personas que no quieren tener GEM desplegado en "proveedor / paquete".