2011-02-15 19 views
9

Si ejecuto bundle install, todo pasa. Reanudo nginx, y cuando visita el sitio veo el error de pasajeros con esto:Instalación de gemas con Bundler == Problema grande

git://github.com/spree/spree.git (at master) is not checked out. Please run `bundle install` (Bundler::GitError) 

Mi Gemfile:

source 'http://rubygems.org' 

gem 'rails', '3.0.3' 
gem 'spree', :git => 'git://github.com/spree/spree.git' 
gem 'haml' 
gem 'ruby-debug' 
gem 'sqlite3', :require => 'sqlite3' 
gem 'ckeditor', '3.4.2.pre' 
gem "aged_revolt", :require => "aged_revolt", :path => "aged_revolt" 
gem "spree_easy_contact", '1.0.2', :path => "#{File.expand_path(__FILE__)}/../vendor/gems/spree_easy_contact-1.0.2" 
gem "honeypot-captcha" 

Cuando corro bundle show spree:

/home/shadyfront/.rvm/gems/[email protected]_gems/bundler/gems/spree-44e4771f3a2a 

Cualquier idea de cómo/¿Por qué está ocurriendo esto y cómo puedo superar esto?

Esta es mi nginx.conf:

env    GEM_HOME=/home/shadyfront/.rvm/gems/[email protected]_gems; 
worker_processes 1; 

events { 
    worker_connections 1024; 
} 

http { 
    access_log /home/shadyfront/logs/user/access_revolting_age.log combined; 
    error_log /home/shadyfront/logs/user/error_revolting_age.log crit; 

    include   mime.types; 
    passenger_root /home/shadyfront/webapps/revolting_age/gems/gems/passenger-2.2.15; 
    passenger_ruby /home/shadyfront/webapps/revolting_age/bin/ruby; 
    sendfile  on; 

    passenger_max_instances_per_app 1; 
    rails_spawn_method    conservative; 
    passenger_max_pool_size 2; 

    server { 
     listen    56943; 
     passenger_enabled on; 
     root    /home/shadyfront/webapps/revolting_age/releases/20110215175319/public; 
     server_name  localhost; 
    } 
} 
+0

¿Qué versión de pasajero? ¿Cómo se ve tu configuración de nginx? ¿Le has dicho que use el gemset 'revolting_gems'? – idlefingers

+0

Sí. Voy a actualizar arriba. – Trip

Respuesta

1

Esto se debe a que también tiene que dirigirse a donde se encuentra la ubicación de la gema (específicamente donde está instalado bundler) en su script de inicio de nginx.

bin/iniciar

#!/bin/bash 

TMPDIR=/home/shadyfront/webapps/truejersey/tmp GEM_HOME=/home/shadyfront/.rvm/gems/[email protected] /home/shadyfront/webapps/truejersey/nginx/sbin/nginx -p /home/shadyfront/webapps/truejersey/nginx/ 
1

¿Estás seguro que no es un problema con la versión # de juerga? No hay tal etiqueta o versión '0.50.99' que pueda ver en github.

Editar:

La única otra cosa que se me ocurre es que desde juerga es un contenedor de otras dependencias de la gema, bundler no le gusta definir el requisito de esta manera.

Un repositorio git debe tener al menos un archivo, en la raíz del directorio que contiene la joya, con la extensión .gemspec. Este archivo DEBE contener una especificación de gema válida , como se esperaba mediante el comando gem build. NO DEBE tener dependencias, excepto en los archivos en el propio repositorio de git y cualquier funcionalidad incorporada de Ruby o Rubygems.

Esto viene del manpage for bundler.

+0

Lo sé. Tan extraña. Si pongo la última versión, que es 0.40.2, después de 'bundle install', devuelve esto: Could not find gem 'spree (= 0.40.2, runtime)' en git: //github.com/spree/spree.git (en el maestro). La fuente contiene 'spree' en: 0.50.99 Y si hago la última versión, pasa el paquete, pero devuelve el error original. – Trip

+0

No necesita el número de versión en este caso porque el repositorio al que está apuntando tiene un gemspec, que está informando la versión [0.50.99] (https://github.com/spree/spree/blob/master/SPREE_VERSION) (ver [el paquete de documentos] (http://gembundler.com/git.html)). Es por eso que se rompe cuando lo cambia a una versión diferente. Se romperá la próxima vez que choquen con la versión también. Debes eliminarlo y usar ': tag' o': ref' si quieres ser más específico sobre las versiones. – idlefingers

+0

¿Sería ese el motivo por el que recibo 'spree.git (en master) no está desprotegido''? – Trip

23

Este problema parece ser un error en el pasajero o el paquete cuando se trata de gemas basadas en git. This "solución" (Estoy escribiendo proveedor en lugar de vender ...) se llevó mi pasajero ejecutándose en este momento:

  1. envase agrupado
  2. bundle install --path vendedor/caché

I Creo que http://www.ruby-forum.com/topic/213962 es el mismo problema y, hasta donde yo sé, no está resuelto. Que esta falla se solucione pronto ...

+2

Acabo de tropezar con esto de nuevo. Definitivamente el problema es causado por la importación desde git y parece como si cientos de personas tuvieran este problema. Preguntándose si alguien realmente trabaja para arreglar esto ... – user562529

+0

Es en realidad un error en Rubygems: http://stackoverflow.com/a/7474856/380607 – Magne

+0

¡genial! ¡muchas gracias! –

0

me enfrentaba a este problema en febrero de 2015 y la instalación de la gema de forma local en el directorio del proyecto arreglarlo para mí.

$ bundle install --path vendor/bundle 
0

El más fácil solución sería instalar todas las gemas de forma local mediante la ejecución de

bundle install --path vendor/bundle 

La forma limpiador es mantener sus joyas en su GEM_HOME (que podría por ejemplo ser gestionados por RVM) y señale este directorio desde proveedor/paquete:

Paso a paso:

  • En su proyecto de crear un directorio vendor/bundle/ruby/
  • De línea de comandos crear un enlace simbólico (2.1.0 reemplazar con tu versión de rubí):

    ln -s $GEM_HOME 2.1.0 
    
  • Asegúrese de que tiene un archivo .bundle/config en su proyecto directorio que contiene la línea

    BUNDLE_PATH: vendor/bundle 
    

Eso es todo. Ahora puede continuar usando 'paquete de instalación' como siempre, pero también se hará referencia a las gemas de git correctamente.

Cuestiones relacionadas