2012-08-31 20 views
6

Estoy intentando ejecutar una aplicación eliminada de Github.¿Cómo instalas gemas desde el archivo Gemfile.lock?

He corrido bundle install para instalar las gemas necesarias desde Gemfile. Sin embargo, cuando se ejecuta la aplicación, un mensaje de error me dice que las gemas instaladas son la versión incorrecta.

Al inspeccionar el Gemfile.lock observo que las versiones son más antiguas que las gemas instaladas. (es decir, tengo nuevas versiones de gemas instaladas y la aplicación requiere gemas más antiguas.)

¿Hay una forma rápida de instalar todas las gemas según las versiones descritas en el archivo Gemfile.lock? Alternativamente, ¿hay algún método para ignorar ese archivo?

Gemfile:

source 'http://rubygems.org' 
    gem 'rails', "3.0.9" 
    gem "sass" 
    .. 

Gemfile.lock:

sass (3.1.1) 
.. 

En el ejemplo anterior, a pesar de que Sass tengan instalada la aplicación requiere especialmente la versión 3.1.1.

+0

Bundler siempre debe instalar las versiones en el archivo 'Gemfile.lock', ese es su propósito. ¿Nunca tienes versiones de esas gemas instaladas en tu sistema? – janders223

+0

Tengo gemas más nuevas instaladas que las especificadas por la aplicación. Cuando ejecuto un paquete de instalación, se instala la última versión de joya disponible. – dmuk

+3

Simplemente elimine el archivo de bloqueo y vuelva a agrupar. – emrahbasman

Respuesta

6

asegurarse de que está ejecutando el servidor web con bundle execute rails server

+1

+1 en este caso, debe ejecutar el servidor desde el paquete para que utilice las gemas correctas. –

9

Con un archivo válido Gemfile.lock, solo bundle install debería ser suficiente, a menos que alguna versión joya en particular ha sido arrancado. En ese caso, necesitaría buscar una versión de gema alternativa que todavía esté disponible actualmente (por lo general, sería suficiente con bundle update name_of_yanked_gem).

Sobre el sass 3.1.1, no es tanto que la aplicación requiere que la versión en particular, sino más bien, que era probable que la versión más reciente disponible cuando el Gemfile.lock se le dio la versión limitaciones generales que se especifican en Gemfile generada última/modificada. Como ha enumerado, no hay un rango de versiones especificado para sass, pero otras gemas pueden imponer restricciones adicionales si tienen sass como dependencia.

Ignorar ignorando Gemfile.lock no es una buena idea, ya que bajo circunstancias normales especificará las versiones de gema que se sabe que aún se pueden usar con la aplicación.

+0

¿Estás seguro de que la instalación del paquete es suficiente? Por ejemplo, ¿qué ocurre si se instalan múltiples versiones de la misma gema (como suele ser el caso)? Pensé que eso era para lo que 'bundler execute' era para. – Dty

+0

Independientemente, si se ha generado 'Gemfile.lock', solo contendrá una versión para cada gema especificada después de resolver las restricciones generales. 'bundle install' es para instalar, y' bundle exec' es para ejecución. – prusswan

+0

Ah ok, creo que estás respondiendo la pregunta original del asker de "cómo instalo las gemas". Estoy respondiendo lo que creo que es su verdadero problema. – Dty

2

probar esto ..

bundle install --deployment 

Con opción de implementación anterior, paquete, luego lee de Gemfile.lock.

Lo que es más, las gemas se instalan en proveedor directorio/paquete, con el directorio de paquete siendo automático creada.

Además, .bundle nuevo directorio se crea directamente en el directorio raíz de los carriles, y tiene un archivo llamado config, cuyo contenido es el siguiente ...

BUNDLE_FROZEN: '1' 
BUNDLE_PATH: vendor/bundle 
BUNDLE_DISABLE_SHARED_GEMS: '1' 

Esperamos que la anterior funciona para usted.

Cuestiones relacionadas