Rails和OpenURI

Kev*_*tre 9 ruby ruby-on-rails

我正在尝试从控制台中的全新rails项目运行以下代码段:

uri = URI.parse("http://25.media.tumblr.com/avatar_279ec8ee3427_64.png")
data = open(uri)
Run Code Online (Sandbox Code Playgroud)

这个错误:

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>'
Run Code Online (Sandbox Code Playgroud)

我正在运行Rails 3.0.4和Ruby 1.9.2.有想法该怎么解决这个吗?谢谢!

小智 30

open() 将接受字符串和URI对象.

io = open("http://...")
io = open(URI.parse("http://..."))
Run Code Online (Sandbox Code Playgroud)

如果open-uri不包含,您所描述的错误将会发生.

require 'open-uri'
Run Code Online (Sandbox Code Playgroud)


cam*_*cam 9

open-uri想要一个字符串.

data = open("http://25.media.tumblr.com/avatar_279ec8ee3427_64.png")
Run Code Online (Sandbox Code Playgroud)

  • 如果你只使用`open`你没有收到任何内容,你只创建了一个文件句柄:`data.class#=> Tempfile`.您必须"读取"文件句柄才能实际接收任何内容. (2认同)