Не удается установить гем Puma на Ruby on Rails

Я пытаюсь установить гем puma, но когда я запускаю

gem install puma

Я получаю это сообщение об ошибке:

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

Добавление gem 'puma' в мой Gemfile и запуск bundle install не вариант, потому что это просто не работает ни с одним драгоценным камнем и дает мне сообщение об ошибке (это отдельная проблема, которую я обошел с другими драгоценными камнями, которые у меня были). используется путем установки их через gem install).


person EJ107    schedule 29.11.2013    source источник
comment
Похоже, у вас не установлены заголовки openssl для вашей платформы. Ознакомьтесь с проблемой puma GH#202, чтобы найти ссылки на заголовки OpenSSL для Windows.   -  person nbrew    schedule 30.11.2013
comment
попробуй gem install puma --source http://rubygems.org   -  person Gopal S Rathore    schedule 30.11.2013
comment
Я запускал bundle update перед bundle install, и это решило проблему. Я не уверен, что это единственное, что помогло, так как я вручную скачал openssl и gem install puma -- --with-opt-dir=c:/RailsInstaller/openssl ruby -v -ropenssl -e "puts OpenSSL::OPENSSL_VERSION"   -  person Anis Abboud    schedule 08.02.2015


Ответы (4)


Столкнулся с той же проблемой.

sudo apt-get install libssl-dev

исправил это для меня.

person Vitali    schedule 25.03.2014
comment
OP использует Windows, а не Linux. - person Seiyria; 20.05.2014
comment
Но это было полезно для меня. - person ghayes; 01.07.2014

Я запускал bundle update перед bundle install, и это решило проблему для меня.

Я не уверен, что это единственное, что помогло, так как до этого я вручную обновил puma, выполнив следующие действия:

  1. Проверил, какую версию openssl Ruby использует, запустив ruby -v -ropenssl -e "puts OpenSSL::OPENSSL_VERSION"
  2. Скачал правильную версию openssl с http://packages.openknapsack.org/openssl/openssl-1.0.0o-x86-windows.tar.lzma (ссылка взята с https://github.com/hicknhack-software/rails-disco/wiki/Installing-puma-on-windows и отредактировал его на основе вывода № 1).
  3. Распаковал openssl с помощью http://www.7-zip.org в C:\RailsInstaller\openssl
  4. gem install puma -- --with-opt-dir=C:/RailsInstaller/openssl
person Anis Abboud    schedule 07.02.2015
comment
Я думаю, что это было ручное обновление. Я выполнил эти шаги, и это сработало. Обратите внимание, что важно использовать прямую косую черту (C:/RailsInstaller/openssl) вместо обратной косой черты (C:\RailsInstaller\openssl). - person Eva; 19.07.2015
comment
Это сработало для меня, но мне пришлось искать 64-битную версию openssl, так как я использую 64-битную версию Ruby и т. д. Для справки, я нашел ее здесь: bintray.com/artifact/download/oneclick/OpenKnapsack/x64/ - person Taz; 02.03.2016

Разобрался с решением связки пумы. Следовал указаниям с https://github.com/hicknhack-software/rails-disco/wiki/Installing-puma-on-windows

Сначала нужно скачать:

  • DevKit, совместимый с вашей версией ruby
  • OpenSSL Пакет разработчика (содержит файлы заголовков и двоичные файлы )

А потом:

  • Установите DevKit, например. в 1_
  • Распакуйте пакет OpenSSL, например. в c:\openssl (используйте 7Zip или PeaZip)
  • Вам нужно скопировать ddls из каталога bin (libeay32.dll и ssleay32.dll) в каталог ruby/bin.
  • Откройте консоль Windows
  • Инициализируйте среду сборки DevKit: c:\devkit\devkitvars.bat (за исключением этого, вместо этого я использовал это в командной строке: ruby dk.rb init)

Теперь можно установить гем puma с пакетами OpenSSL:

gem install puma -- --with-opt-dir=c:\openssl
person Michael Maddocks    schedule 31.01.2015
comment
Это решение сработало для меня. На всякий случай кому-то нужны подробности: gem install puma -v '2.9.1' -- --with-opt-dir=c:\openssl bundle install - person Seto; 21.05.2015
comment
У ruby/bin уже было 2 dll в моей системе, я попытался перезаписать их теми, что в openssl, и ruby ​​начал жаловаться на поддержку openssl. Вернул исходные файлы и все заработало, спасибо! - person cipak; 23.09.2015