stop start rails digitalocean deploy app ruby-on-rails ruby-on-rails-3 passenger bundler

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".