Механизировать выдачу неверного аргумента (ожидаемый объект URI или строку URI) с помощью user_agent_alias

Я пытаюсь загрузить изображения из Twitter, но при использовании user_agent_alias происходит сбой. Мне нужно указать пользовательский агент. Но почему это происходит с использованием псевдонима агента? Это нормально?

Попробуйте сами с блоком { |agent| agent.user_agent_alias = 'Mac Safari'} и без него:

require "mechanize"
agent = Mechanize.new { |agent| agent.user_agent_alias = 'Mac Safari'}
doc = agent.get("http://www.twitter.com")
doc.images

Трассировка ошибки:

ArgumentError: bad argument (expected URI object or URI string)
    from /Users/luccasmaso/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/uri/generic.rb:1202:in `rescue in merge'
    from /Users/luccasmaso/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/uri/generic.rb:1199:in `merge'
    from /Users/luccasmaso/.rvm/gems/ruby-1.9.3-p392/gems/mechanize-2.6.0/lib/mechanize/page/image.rb:165:in `url'
    from /Users/luccasmaso/.rvm/gems/ruby-1.9.3-p392/gems/mechanize-2.6.0/lib/mechanize/page/image.rb:125:in `block in pretty_print'
    from /Users/luccasmaso/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/prettyprint.rb:217:in `block (2 levels) in group'
    from /Users/luccasmaso/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/prettyprint.rb:243:in `nest'
    from /Users/luccasmaso/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/prettyprint.rb:216:in `block in group'
    from /Users/luccasmaso/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/prettyprint.rb:228:in `group_sub'
    from /Users/luccasmaso/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/prettyprint.rb:215:in `group'
    from /Users/luccasmaso/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/pp.rb:164:in `object_group'
    from /Users/luccasmaso/.rvm/gems/ruby-1.9.3-p392/gems/mechanize-2.6.0/lib/mechanize/page/image.rb:124:in `pretty_print'
    from /Users/luccasmaso/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/pp.rb:154:in `block in pp'
    from /Users/luccasmaso/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/prettyprint.rb:217:in `block (2 levels) in group'
    from /Users/luccasmaso/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/prettyprint.rb:243:in `nest'
    from /Users/luccasmaso/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/prettyprint.rb:216:in `block in group'
    from /Users/luccasmaso/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/prettyprint.rb:228:in `group_sub'
    from /Users/luccasmaso/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/prettyprint.rb:215:in `group'
    from /Users/luccasmaso/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/pp.rb:154:in `pp'
    from /Users/luccasmaso/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/pp.rb:77:in `block in pp'
    from /Users/luccasmaso/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/pp.rb:121:in `guard_inspect_key'
    from /Users/luccasmaso/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/pp.rb:77:in `pp'
    from /Users/luccasmaso/.rvm/rubies/ruby-1.9.3-p392/lib/ruby/1.9.1/pp.rb:51:in `pretty_inspect'
    from /Users/luccasmaso/.rvm/rubies/ruby-1.9.3-p392/bin/irb:16:in `<main>'1.9.3p392 :021 > 

Спасибо!


person Luccas    schedule 24.05.2013    source источник
comment
Похоже, он не любит проверять doc.images. Вероятно, потому что в атрибутах src есть неправильный uri.   -  person pguardiario    schedule 25.05.2013


Ответы (1)


Мне удалось заставить ваш код работать, используя текущую версию Mechanize: 2.7.0.

person BigLoppy    schedule 24.05.2013
comment
Ну, на самом деле это была ошибка, и ее исправили! github.com/sparklemotion/mechanize/issues/317 - person Luccas; 01.06.2013