rails控制台与使用机械化包装的irb中的统一常量错误



第一个基本问题-Ruby中未初始化的常量错误的含义是什么?如果这有助于提供一些背景的话,我有一个客观性的背景。

其次,我正在rails中运行一个rake任务,该任务抛出了前面提到的错误。具体来说,当我使用"tor-privoxy"gem时会发生错误,这是一个机械化包装器,允许通过tor代理进行自动浏览。

我正在使用github上提供的以下示例代码:https://github.com/pirj/tor-privoxy

agent ||= TorPrivoxy::Agent.new '127.0.0.1', '', {8118 => 9050} do |agent|
    sleep 10
    puts "New IP is #{agent.ip}"
    page = agent.get('https://www.example.com/')
end
>> New IP is 72.141.125.115
>> NameError: uninitialized constant Net::HTTP::Persistent::SSLReuse::HTTPResponse
    from /Library/Ruby/Gems/1.8/gems/net-http-persistent-2.3.3/lib/net/http/persistent/ssl_reuse.rb:115:in `connect'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:553:in `do_start'
    from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:548:in `start'
    from /Library/Ruby/Gems/1.8/gems/net-http-persistent-2.3.3/lib/net/http/persistent.rb:405:in `connection_for'
    from /Library/Ruby/Gems/1.8/gems/net-http-persistent-2.3.3/lib/net/http/persistent.rb:616:in `request'
    from /Library/Ruby/Gems/1.8/gems/mechanize-2.1/lib/mechanize/http/agent.rb:264:in `fetch'
    from /Library/Ruby/Gems/1.8/gems/mechanize-2.1/lib/mechanize.rb:319:in `get'
    from /Library/Ruby/Gems/1.8/gems/tor-privoxy-0.1.1/lib/tor-privoxy/agent.rb:16:in `send'
    from /Library/Ruby/Gems/1.8/gems/tor-privoxy-0.1.1/lib/tor-privoxy/agent.rb:16:in `method_missing'
    from (irb):4
    from /Library/Ruby/Gems/1.8/gems/tor-privoxy-0.1.1/lib/tor-privoxy/agent.rb:11:in `call'
    from /Library/Ruby/Gems/1.8/gems/tor-privoxy-0.1.1/lib/tor-privoxy/agent.rb:11:in `initialize'
    from (irb):1:in `new'
    from (irb):1

另一方面,如果我在irb中运行相同的代码,它不会抛出单元化的常量错误。我已经确保我的gemfile包含"tor-privoxy",并运行了"bundle-install"命令。

如果你想在mac上使用ruby,我建议你使用像rvm或rbenv这样的工具来管理ruby的安装。

你所经历的错误似乎是众所周知的。看看这个github问题:https://github.com/thrillcall/net-http-persistent/commit/9f770b4660f1c9c433c1f3b50ba24dd4f1f71cf8

最新更新