que - No se puede instalar la gema Puma en Ruby on Rails
que son las gemas en ruby (5)
Intento instalar la gema del puma, pero cuando corro
gem install puma
Recibo este mensaje de error:
Temporarily enhancing PATH to include DevKit
Building native extensions. This could take a while...
ERROR: Error installing puma:
ERROR: Failed to build gem native extension.
C:/Ruby193/bin/ruby.exe extconf.rb
creating Makefile
make
generating puma_http11-i386-mingw32.def
compiling http11_parser.c
ext/http11/http11_parser.rl: In function ''puma_parser_execute'':
ext/http11/http11_parser.rl:111:3: warning: comparison between signed and unsigned integer expressions
compiling io_buffer.c
io_buffer.c: In function ''buf_to_str'':
io_buffer.c:119:3: warning: pointer targets in passing argument 1 of ''rb_str_new'' differ in signedness
c:/Ruby193/include/ruby-1.9.1/ruby/intern.h:653:7: note: expected ''const char *'' but argument is of type ''uint8_t *''
compiling mini_ssl.c
In file included from mini_ssl.c:3:0:
c:/Ruby193/include/ruby-1.9.1/ruby/backward/rubyio.h:2:2: warning: #warning use "ruby/io.h" instead of "rubyio.h"
mini_ssl.c:4:25: fatal error: openssl/bio.h: No such file or directory
compilation terminated.
make: *** [mini_ssl.o] Error 1
Gem files will remain installed in C:/Ruby193/lib/ruby/gems/1.9.1/gems/puma-2.6.0 for inspection.
Results logged to C:/Ruby193/lib/ruby/gems/1.9.1/gems/puma-2.6.0/ext/puma_http11/gem_make.out
Agregar gem ''puma''
a mi Gemfile y ejecutar bundle install
no es una opción, porque eso simplemente no funciona con ninguna gema y me da un mensaje de error (que es un problema aparte, uno que eludí con el otro gemas que he usado instalándolas a través de la gem install
).
Creo que tocaste el número 430 https://github.com/puma/puma/issues/430
Volver a instalar Ruby podría ser útil y cerrar este problema en GitHub.
Encontré la solución para el paquete de puma. Direcciones seguidas desde https://github.com/hicknhack-software/rails-disco/wiki/Installing-puma-on-windows
Primero debes descargar:
- DevKit compatible con tu versión ruby
- Paquete de desarrollador OpenSSL (contiene archivos de encabezado y binarios)
Y entonces:
- Instale DevKit, por ejemplo, en
c:/devkit
- Descomprime el paquete OpenSSL, por ejemplo, en
c:/openssl
(usa 7Zip o PeaZip) - Debe copiar los ddls del directorio bin (
libeay32.dll
yssleay32.dll
) en su directorio ruby / bin. - Abra una consola de Windows
- Inicialice el entorno de compilación DevKit:
c:/devkit/devkitvars.bat
(excepto que aquí lo usé en el símbolo del sistema en su lugar:ruby dk.rb init
)
Ahora es posible instalar la gema puma con los paquetes OpenSSL:
gem install puma -- --with-opt-dir=c:/openssl
Estoy usando Windows 8 y no pude hacer este trabajo en modo de desarrollo. Sin duda, funcionó en modo de producción cuando me desplegué en Heroku. ¿Has probado en modo de producción?
Se encontró con el mismo problema.
sudo apt-get install libssl-dev
me lo arregló
bundle update
antes de la bundle install
y eso resolvió el problema por mí.
No estoy seguro de si eso fue lo único que ayudó, ya que actualicé puma manualmente antes de eso, siguiendo estos pasos:
- Comprueba qué versión de openssl Ruby está utilizando ejecutando
ruby -v -ropenssl -e "puts OpenSSL::OPENSSL_VERSION"
- Se descargó la versión de openss correcto de http://packages.openknapsack.org/openssl/openssl-1.0.0o-x86-windows.tar.lzma (se obtuvo el enlace de https://github.com/hicknhack-software/rails-disco/wiki/Installing-puma-on-windows y editado en base a la salida de # 1).
- Openssl extraído usando http://www.7-zip.org a C: / RailsInstaller / openssl
-
gem install puma -- --with-opt-dir=C:/RailsInstaller/openssl