Единичная постоянная ошибка в консоли rails по сравнению с irb с использованием оболочки Mechanize

Первый вопрос с фундаментального уровня. Что означает неинициализированная постоянная ошибка в Ruby? Я родом из Objective-C, если это поможет обеспечить некоторый контекст.

Во-вторых, я запускаю задачу rake в rails, которая выдает вышеупомянутую ошибку. В частности, ошибка возникает, когда я использую гем «tor-privoxy», который представляет собой оболочку Mechanize, позволяющую автоматически просматривать через прокси-сервер 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».


person samfu_1    schedule 18.07.2012    source источник


Ответы (1)


Если вы хотите работать с Ruby на своем Mac, я рекомендую вам использовать такой инструмент, как rvm или rbenv, для управления установкой Ruby.

ошибка, с которой вы столкнулись, кажется, уже известна. взгляните на эту проблему github: https://github.com/thrillcall/net-http-persistent/commit/9f770b4660f1c9c433c1f3b50ba24dd4f1f71cf8

person phoet    schedule 18.07.2012
comment
У меня уже установлен net-http-persistent 2.7, который включает это обновление. Для Mechanize требуется этот драгоценный камень @ 2.5 или выше. Разве это не должно смягчить эту проблему? - person samfu_1; 19.07.2012
comment
удалите все старые версии, чтобы быть уверенным. - person phoet; 19.07.2012