Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails和OpenURI_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails Rails和OpenURI

Ruby on rails Rails和OpenURI,ruby-on-rails,ruby,Ruby On Rails,Ruby,我试图在控制台中运行来自全新rails项目的以下代码段: uri = URI.parse("http://25.media.tumblr.com/avatar_279ec8ee3427_64.png") data = open(uri) 这将导致以下错误: TypeError: can't convert URI::HTTP into String from (irb):24:in `open' from (irb):24 from /Users/kevin/.rvm/

我试图在控制台中运行来自全新rails项目的以下代码段:

uri = URI.parse("http://25.media.tumblr.com/avatar_279ec8ee3427_64.png")
data = open(uri)
这将导致以下错误:

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>'
TypeError:无法将URI::HTTP转换为字符串
发件人(irb):24:在“开放”中
起始(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`'
来自脚本/rails:6:in'require'
来自脚本/rails:6:in`'

我运行的是Rails 3.0.4和Ruby 1.9.2。有没有办法解决这个问题?谢谢

打开uri需要一个字符串

data = open("http://25.media.tumblr.com/avatar_279ec8ee3427_64.png")
open()
将同时接受字符串和URI对象

io = open("http://...")
io = open(URI.parse("http://..."))
如果未包括
openuri
,则会发生您描述的错误

require 'open-uri'

您可能应该将
.read
添加到您的
open
,例如:
data=open(
)http://www.example.com/“)。读取
否则您将有一个可以读取的IO句柄,但没有内容。如果您仅使用
打开而未收到任何内容,则只创建了一个文件句柄:
data.class#=>Tempfile
。您必须
读取
文件句柄才能实际接收任何内容。