Невозможно установить драгоценный камень Puma на Ruby on Rails

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

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).

5 ответов

Наткнулся на ту же проблему.

sudo apt-get install libssl-dev

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

Я побежал 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

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

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

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

А потом:

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

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

gem install puma -- --with-opt-dir=c:\openssl

Я думаю, что вы затронули проблему # 430 https://github.com/puma/puma/issues/430

Переустановка Ruby может помочь вам, так как она закрыла эту проблему на GitHub.

Я использую Windows 8 и не смог получить эту работу в режиме разработки. Конечно, он работал в производственном режиме, когда я развернулся на Heroku. Вы пробовали в производственном режиме?

Другие вопросы по тегам