首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数“add_to_curl”在尝试使用curl发出HTTP时出错

函数“add_to_curl”在尝试使用curl发出HTTP时出错
EN

Stack Overflow用户
提问于 2013-11-17 21:08:04
回答 1查看 115关注 0票数 0

我正在尝试测试“curl-multi”gem,以发出http-请求:

代码语言:javascript
复制
puts Benchmark.measure {
  require 'curl-multi'
  # make multiple GET requests
  easy_options = {:follow_location => true}
  multi_options = {:pipeline => true}

  Curl::Multi.get("http://www.google.com/","http://www.google.com/","http://www.google.com/", easy_options, multi_options) do|easy|
    # do something interesting with the easy response
    puts easy.last_effective_url
  end
}

但是有个天大的错误:

代码语言:javascript
复制
/Users/bmalets/.rvm/gems/ruby-1.9.3-p448/gems/curl-multi-0.2/lib/curl-multi.rb: In function ‘add_to_curl’:
/Users/bmalets/.rvm/gems/ruby-1.9.3-p448/gems/curl-multi-0.2/lib/curl-multi.rb:238: warning: ISO C90 forbids mixed declarations and code
/Users/bmalets/.rvm/gems/ruby-1.9.3-p448/gems/curl-multi-0.2/lib/curl-multi.rb:243: error: ‘struct RString’ has no member named ‘len’
/Users/bmalets/.rvm/gems/ruby-1.9.3-p448/gems/curl-multi-0.2/lib/curl-multi.rb: In function ‘c_select’:
/Users/bmalets/.rvm/gems/ruby-1.9.3-p448/gems/curl-multi-0.2/lib/curl-multi.rb:287: error: ‘struct RArray’ has no member named ‘len’
/Users/bmalets/.rvm/gems/ruby-1.9.3-p448/gems/curl-multi-0.2/lib/curl-multi.rb:288: error: ‘struct RArray’ has no member named ‘ptr’
/Users/bmalets/.rvm/gems/ruby-1.9.3-p448/gems/curl-multi-0.2/lib/curl-multi.rb:292: error: ‘struct RArray’ has no member named ‘len’
/Users/bmalets/.rvm/gems/ruby-1.9.3-p448/gems/curl-multi-0.2/lib/curl-multi.rb:293: error: ‘struct RArray’ has no member named ‘ptr’
/Users/bmalets/.rvm/gems/ruby-1.9.3-p448/gems/curl-multi-0.2/lib/curl-multi.rb:302: warning: implicit conversion shortens 64-bit value into a 32-bit value

我怎么才能修好它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-18 08:38:12

tl;drcurl-multi RubyGem现在已经很老了,无法维护: v0.2 (最后一版)已于2008年6月3日发布。它与Ruby1.9不兼容。

您绝对应该考虑其他选择,例如:

两者都提供对libcurl多界面的支持。

这里的问题是您使用Ruby1.9,而curl-multi是为Ruby1.8设计的。

与此同时,Ruby发生了变化,例如,错误'struct RString' has no member named 'len'来自于Ruby1.8(参见ruby.h)这一事实:

代码语言:javascript
复制
struct RString {
    struct RBasic basic;
    long len;
    char *ptr;
    union {
        long capa;
        VALUE shared;
    } aux;
};

在Ruby1.9中,您有:

代码语言:javascript
复制
struct RString {
    struct RBasic basic;
    union {
        struct {
            long len;
            char *ptr;
            union {
                long capa;
                VALUE shared;
            } aux;
        } heap;
        char ary[RSTRING_EMBED_LEN_MAX + 1];
    } as;
};

换句话说,已经对不再分配堆的短弦进行了优化。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20036205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档