无法在Ruby on Rails上安装Puma gem

EJ1*_*107 23 rubygems ruby-on-rails puma ruby-on-rails-4

我正在尝试安装美洲狮宝石,但是当我跑的时候

gem install puma
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息:

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
Run Code Online (Sandbox Code Playgroud)

添加gem 'puma'到我的Gemfile并运行bundle install不是一个选项,因为它不适用于任何gem并给我一个错误消息(这是一个单独的问题,我已经绕过我用过的其他宝石了通过安装它们gem install).

Vit*_*ali 13

遇到了同样的问题.

sudo apt-get install libssl-dev
Run Code Online (Sandbox Code Playgroud)

为我修好了.

  • 但是,这对我有帮助. (6认同)
  • OP使用的是Windows,而不是linux. (3认同)

Ani*_*oud 9

bundle update之前跑了bundle install,这解决了我的问题.

我不确定这是否是唯一有帮助的东西,因为我在此之前手动更新了puma,使用以下步骤:

  1. 通过运行检查openssl Ruby正在使用的版本 ruby -v -ropenssl -e "puts OpenSSL::OPENSSL_VERSION"
  2. http://packages.openknapsack.org/openssl/openssl-1.0.0o-x86-windows.tar.lzma下载了正确的openssl版本 (从https://github.com/hicknhack-software/rails-获取链接disco/wiki /安装-puma-on-windows并根据#1的输出进行编辑.
  3. 使用http://www.7-zip.org将C语言提取到C:\ RailsInstaller\openssl
  4. gem install puma -- --with-opt-dir=C:/RailsInstaller/openssl


小智 5

找出解决彪马捆绑的方法。遵循https://github.com/hicknhack-software/rails-disco/wiki/Installing-puma-on-windows上的说明

首先,您需要下载:

  • DevKit与您的ruby版本兼容
  • OpenSSL Developer软件包(包含头文件和二进制文件)

然后:

  • 安装DevKit,例如在 c:\devkit
  • 解压缩OpenSSL程序包,例如c:\openssl(使用7Zip或PeaZip)
  • 您需要将ddls从bin目录(libeay32.dllssleay32.dll)复制到ruby / bin目录。
  • 打开Windows控制台
  • 初始化的devkit构建环境:c:\devkit\devkitvars.bat(除了这里,我在命令提示符下使用这个:ruby dk.rb init

现在可以使用OpenSSL软件包安装puma gem了:

gem install puma -- --with-opt-dir=c:\openssl
Run Code Online (Sandbox Code Playgroud)


小智 3

我认为你遇到了问题 #430 https://github.com/puma/puma/issues/430

重新安装 Ruby 可能会对您有所帮助,并且它会在 GitHub 上解决此问题。