Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails and OpenURI

I'm trying to run the following snippet from a brand new rails project in the console:

uri = URI.parse("http://25.media.tumblr.com/avatar_279ec8ee3427_64.png")
data = open(uri)

This errors with:

TypeError: can't convert URI::HTTP into String
    from (irb):24:in `open'
    from (irb):24
    from /Users/kevin/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/commands/console.rb:44:in `start'
    from /Users/kevin/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/commands/console.rb:8:in `start'
    from /Users/kevin/.rvm/gems/ruby-1.9.2-p136/gems/railties-3.0.4/lib/rails/commands.rb:23:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

I'm running on Rails 3.0.4 and Ruby 1.9.2. Any ideas on how to fix this? Thanks!

like image 664
Kevin Sylvestre Avatar asked Feb 18 '11 20:02

Kevin Sylvestre


2 Answers

open() will accept both a string and a URI object.

io = open("http://...")
io = open(URI.parse("http://..."))

The error you described will happen if open-uri is not included.

require 'open-uri'
like image 107
Tyler Broadbent Avatar answered Oct 20 '22 00:10

Tyler Broadbent


open-uri wants a string.

data = open("http://25.media.tumblr.com/avatar_279ec8ee3427_64.png")
like image 26
cam Avatar answered Oct 20 '22 00:10

cam