Question

I'm trying to fetch images from Twitter but it crashes if I use user_agent_alias. I need to specify the user agent. But why it happens using agent alias? Is that normal?

Try yourself with and without the { |agent| agent.user_agent_alias = 'Mac Safari'} block:

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

Error trace:

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 > 

Thanks!

Was it helpful?

Solution

I was able to get your code working by using the current version of Mechanize: 2.7.0

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top