ruby-on-rails - que - github capistrano
¿Por qué no bundler instalar JSON joya? (19)
Recibo el siguiente error cuando intento ejecutar la cap production deploy
.
DEBUG [dc362284] Bundler::GemNotFound: Could not find json-1.8.1.gem for installation
DEBUG [dc362284] An error occurred while installing json (1.8.1), and Bundler cannot continue.
DEBUG [dc362284] Make sure that `gem install json -v ''1.8.1''` succeeds before bundling.
Puede ser importante observar que esta implementación estaba funcionando, que actualicé a Ruby 2.1.0 para eliminar un error de codificación. Actualicé localmente que funcionó bien. rvm install 2.1.0
y rvm use 2.1.0
luego cambié mi archivo .ruby-version
para reflejar esta actualización de Ruby.
El comando de bundle install
funciona localmente, pero produce el mismo error anterior cuando ssh en el servidor de destino y ejecuta este comando.
Si ejecuto la lista de gemas puedo ver esto en la lista de gemas.
...
jquery-rails (3.0.4)
json (1.8.1)
less (2.3.2)
...
Si intento la solución recomendada gem install json -v ''1.8.1''
Localmente y en el servidor de destino obtengo el siguiente resultado:
Building native extensions. This could take a while...
Successfully installed json-1.8.1
Parsing documentation for json-1.8.1
Done installing documentation for json after 0 seconds
1 gem installed
Entonces parece que la gema está instalada, ¿verdad? ¿Por qué está pasando esto? ¿Como puedo resolver esto? Cualquier ayuda sería muy apreciada.
Bundle no instalaba json -v ''1.8.1'' y eliminar mi Gemfile.lock y ejecutar el paquete de nuevo resolvió este problema para mí.
Cambiar la versión de ruby de 1.9 a 2.2 con rvm hizo el trabajo por mí
Cuando traté de instalar la gema json usando gem install json
separado de simplemente usar bundle install
obtuve ERROR: Failed to build gem native extension.
, al buscarlo encontré usando
apt-get install ruby-dev
Hizo el truco
Deberías intentarlo
$ sudo gem install json -v ''1.8.2''
en mi caso (Ubuntu 14.04) que no funcionó directamente y tuve que hacer esto:
$ sudo apt-get install ruby-dev
y luego podría instalar la gema y continuar. Tenía un problema más que fue corregido por:
$ sudo apt-get install libsqlite3-dev
Esperar ayuda.
Ejecuta este comando, entonces todo estará bien
sudo apt-get install libgmp-dev
Encontré la solución here . Hay un problema con json versión 1.8.1 y ruby 2.2.3, entonces instale la versión json 1.8.3.
gem install json -v1.8.3
Entonces, después de medio día de esto y casi inmediatamente después de publicar mi pregunta, encontré la respuesta. Bundler 1.5.0 tiene un error que no reconoce las gemas predeterminadas como se hace referencia aquí
La solución fue actualizar a bundler 1.5.1 usando gem install bundler -v ''= 1.5.1''
Esto parece ser un error en Bundler al no reconocer las gemas predeterminadas instaladas junto con ruby 2.x. Todavía experimenté el problema incluso con la última versión de bundler (1.5.3).
Una solución es simplemente eliminar json-1.8.1.gemspec del directorio predeterminado gemspec.
rm ~/.rubies/ruby-2.1.0/lib/ruby/gems/2.1.0/specifications/default/json-1.8.1.gemspec
Después de hacer esto, el paquete no debería tener problemas para localizar la gema. Tenga en cuenta que estoy usando chruby. Si está utilizando algún otro administrador de ruby, tendrá que actualizar su ruta en consecuencia.
Instalé la última versión de json:
gem install json
Luego eliminó la línea json (1.8.1) del archivo Gemfile.lock e hizo un
bundle install
Y luego el archivo Gemfile.lock usa json (1.8.3) sin errores
Me encontré con este error al intentar ejecutar un proyecto en mi caja de desarrollo local (OSX 10.6), usando Sinatra y Postgresql (a través de activerecord), ejecutándose en un rvm''d ruby 2.1. Encontré mi respuesta aquí: https://github.com/wayneeseguin/rvm/issues/2511
Mi problema exacto (después del primer bloque de entradas de registro):
También recibo un error al intentar crear extensiones nativas para gemas
La answer :
rvm reinstall 2.1.0 --disable-binary
La explanation :
OSX no tiene un administrador de paquetes, por lo que todas las bibliotecas deben ser instaladas manualmente por el usuario, esto hace que sea virtualmente imposible vincular el binario dinámicamente, y como puede ver, hay problemas con el binario (pseudo) vinculado estáticamente.
En aras de la exhaustividad, primero había olvidado actualizar rvm ( rvm get head
), lo que arrojaba algunos otros errores, pero aún necesitaba el flag --disable-binary
una vez que lo había hecho.
Me faltaba la solución de encabezados C era descargarlo para Xcode, esta es la mejor manera.
xcode-select --install
Espero eso ayude.
Para OS X, asegúrese de tener coreutils
$ brew install coreutils
$ bundle
Para mí, algunas de las respuestas mencionadas anteriormente fueron útiles desde el punto de vista de la comprensión, pero eso no resolvió mi problema.
Entonces esto es lo que hice para resolver el problema.
- Modificado gemfile.lock para actualizar json (2.0.2) ( Anteriormente, era 1.8.3 )
- Compruebe la versión de Bundler instalada (comando
Bundler -v
). Tenía la versión 1.12.5 instalada - Instalar la versión 1.11.2 del paquete (utilizando el
gem install bundler -v ''1.11.2''
) - A continuación, ejecute bundle install
Para macOS Sierra:
Me encontré con este error cuando utilicé el paquete ( v1.15.3
) en el proyecto Rails ( v4.2
). La solución para mí es gem uninstall bundler -v ''1.15.3''
y gem install bundler -v ''1.14.6''
.
Para resolver este problema, simplemente ejecute:
bundle update
Actualizará la versión de tu paquete. Entonces corre:
bundle install
Su problema se resolverá. La solución está bien explicada here .
Si la respuesta recomendada no ayudó porque ya está usando una versión más nueva de bundler. Prueba la solución que funcionó para mí.
Elimine todo dentro de la carpeta de su proveedor. Agregue una línea a su archivo gem
gem ''json'', ''1.8.0''
A continuación, ejecute - bundle update json
.
Parece ser un problema con 1.8.1, por lo que volver al 1.8.0 me sirvió.
si estás en MacOS Sierra y tu versión de ruby es 2.4.0. La versión de ruby no es compatible con json 1.8.3.
Puedes intentar agregar esta línea en tu Gemfile:
gem ''json'', github: ''flori/json'', branch: ''v1.8''
Esto funciona para mi!
bundle update json
. Ayudó a pasar.
$ bundle update json
$ bundle install