在Windows XP中安装Ruby Curb gem

我正在尝试使用ruby 1.8进行文件上传,似乎没有好的开箱即用的解决方案。 他们似乎都需要一些第三方补丁或项目分支来工作。 我会使用机械化,但实际上我需要与xml api接口,而机械化似乎专门用于直接处理网页。 我已经尝试过RestClient但它没有开箱即用的多部分表单的function,你必须使用项目的分支才能使它工作。 类似的情况似乎存在于Net:HTTP我认为遏制将是要走的路,因为我可能想要使用multicurl反正我计划做的其他事情。 但是,在我的Windows机器上,我似乎无法安装路边gem。 gem install curb给出一个错误,说我需要指定curl库所在的位置..我已经尝试将选项传递给extconf但到目前为止没有运气。 这是没有任何选项的gem install curb的输出

C:\ruby\lib\ruby\gems\1.8\gems\curb-0.5.4.0>gem install curb Building native extensions. This could take a while... ERROR: Error installing curb: ERROR: Failed to build gem native extension. C:/ruby/bin/ruby.exe extconf.rb checking for curl-config... no checking for main() in curl.lib... no *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --srcdir=. --curdir --ruby=C:/ruby/bin/ruby --with-curl-dir --without-curl-dir --with-curl-include --without-curl-include=${curl-dir}/include --with-curl-lib --without-curl-lib=${curl-dir}/lib --with-curllib --without-curllib extconf.rb:12: Can't find libcurl or curl/curl.h (RuntimeError) Try passing --with-curl-dir or --with-curl-lib and --with-curl-include options to extconf. Gem files will remain installed in C:/ruby/lib/ruby/gems/1.8/gems/curb-0.5.4.0 for inspection. Results logged to C:/ruby/lib/ruby/gems/1.8/gems/curb-0.5.4.0/ext/gem_make.out 

任何想法我怎么能让这个工作?

马特,

我以前在Windows中安装curb gem时遇到了麻烦。 在试图了解别人如何解决这个问题时,我遇到了很多问题而不是很多解决方案。 今晚必须再做一次我决定记录我的步骤并发布结果: http : //beginrescue.blogspot.com/2010/07/installing-curb-with-ruby-191-in.html

对不起blogspam,希望这对某人有用。

皮特

最终,在带有ruby 1.9.1的win7中,以下适用于我(需要更新路径以反映您的curl版本的位置(和版本)(可以通过http://curl.haxx.se/download获取) .html#Win32 ))

 gem install curb -- --with-curl-lib="C:/curl/curl-7.21.1-devel-mingw32/bin" --with-curl-include="C:/curl/curl-7.21.1-devel-mingw32/include" 

这确实需要几分钟的时间来处理,所以请耐心等待。

我在回答中使用了Evan的安assembly置,并使用了向导中正确的libcurl二进制文件: http : //curl.haxx.se/dlwiz/

gem install curb – –with-curl-lib =“C:/curl/curl-7.21.1-devel-mingw32/bin”–with-curl-include =“C:/curl/curl-7.21.1 -devel-的mingw32 /包括”

这对我来说在win 64 64位上有用。

确保选择libcurl,其中包含有关libcurl软件开发的二进制文件的描述。

查看您正在尝试解决的潜在问题。 之前我一直在寻找一个多部门的客户端,并花了很多时间尝试不同的gem/工具。 我发现唯一一个令人满意的是Nick Siegers 多部分gem

它非常简单易用,我强烈推荐它。

这是我为我的测试制作的示例代码

 require "rubygems" require 'net/http/post/multipart' url = URI.parse('http://localhost:3000/mytest/1.xml') File.open("c:/temp/readme.txt") do |jpg| req = Net::HTTP::Put::Multipart.new url.path, "mytest[attachment]" => UploadIO.new(jpg, "text/plain", "c:/temp/readme.txt") res = Net::HTTP.start(url.host, url.port) do |http| http.request(req) end puts res.inspect end 

正如我已经评论过的那样,我确实找到了一个简单地使用github gems中提供的rest-client的解决方案.gem install rest-client将完成工作。 从那里你可以做一个包含一个或多个文件的多部分post。它具有rest客户端可能需要的所有灵活性。 请参阅此处的文档: http : //rdoc.info/projects/archiloque/rest-client,了解有关如何使用它的示例。

我发现它没有正确执行的唯一事情是解析cookie。 我公司使用的cookie在值中可以有相同的符号,并且不能正确解析它们。 我已经放了一些黑客来解决这个问题,但最终又回来咬我了..所以就在前几天我开始分析来自Mechanize / WEBrick的代码,并且能够利用Mechanize的CookieJar来管理其余的Cookie -client ..希望我可以让rest-client的作者将这个function构建到rest-client中,这样别人就不会遇到同样的问题了。

对于Windows 8,命令是:

 gem install curb -- --with-curl-lib=C:/Utils/curl-7.32.0-dev/lib64 --with-curl-include=C:/Utils/curl-7.32.0-dev/include 

它几乎安装。 现在有“未定义的引用”警告/错误

这也适用于Windows 10 x64:

gem install curb – –with-curl-lib =“C:/Users/WindowsVM/binaries/curl-7.40.0-devel-mingw64/lib64”–with-curl-include =“C:/ Users / WindowsVM /binaries/curl-7.40.0-devel-mingw64/include”

当你说你将配置选项传递给extconf.rb时,你的意思是在gem install命令中吗?

如果没有,我相信它会有所不同

gem install curb – –with-curl-dir = dir

它可能是一个不同的配置选项,但是 – 您需要通过它来配置选项。

执行以下命令及其工作原理

gem install curb –platform = mswin32

花了很多时间,我放弃了……

上面给出的答案对我不起作用,一些“curl”链接被打破,我甚至无法从官方网站下载。

我想要的很简单:在cygwin上安装curb gem。

现在我切换到VirtalBox,并在其上安装了一个Ubuntu服务器。 然后,我在20分钟内安装它没有任何问题。

所以,在cygwin下工作的人们,让我们切换到虚拟机!

我尝试了上面的所有解决方案,没有任何效果,我放弃了,但幸运的是我后来偶然发现了这篇文章http://jooglar.com/edely/content/installing-libcurl-ruby-windows ,其中的说明完美无缺。

以下是方向,以防网站瘫痪:


1.下载库的“libcurl”版本
来自http://curl.haxx.se/dlwiz/?type=lib

2.安装在任何地方,但路径不能有空格。
确保在解压缩文件时,找到目录“bin”和“include”

3.将libcurl路径(以/ bin;结尾)添加到系统PATH变量中
警告:在PATH中使用/ INSTEAD OF \ 。 路径中不允许有空格。 例如: C:/curl/curl-7.26.0-devel-mingw32/bin;

4.安装gem
警告:在PATH中再次使用/ \ 。 往上看。

示例命令: gem install curb -- --with-curl-lib=C:/curl/curl-7.26.0-devel-mingw32/bin --with-curl-include=C:/curl/curl-7.26.0-devel-mingw32/include


[注意:注意独立----with-...之前,这对我来说是个问题。]

在这一点上,它应该工作。 它对我有用。 如果没有,您可以尝试其余的说明:


如果它不起作用,请将以下.dll文件复制到ruby / bin目录并再次运行上一个命令。

  • libcurl.dll
  • libssl32.dll
  • libeay32.dll

此外,如果这不起作用…更新DevKit并再次运行上一个命令。 下载最新版本,然后从控制台转到DevKit目录并运行ruby dk.rb install --force