Невозможно установить драгоценный камень 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 до этого, используя следующие шаги:
- Проверил, какую версию openssl Ruby использует, запустив
ruby -v -ropenssl -e "puts OpenSSL::OPENSSL_VERSION"
- Скачал нужную версию 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).
- Извлеченный openssl с помощью http://www.7-zip.org/ в C:\RailsInstaller\openssl
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. Вы пробовали в производственном режиме?