File.open返回整数而不是文件不一致

时间:2012-08-24 03:55:18

标签: ruby-on-rails ruby-on-rails-3 file-io ruby-on-rails-3.2

temp_image = File.open(Rails.root.join("tmp","project_image.png"), 'wb') do |f| 
  f.write(Base64.decode64(image_data))
end

puts temp_image
puts File.open(Rails.root.join("tmp","project_image.png"))

输出:

  

24018

     

<文件:0x007fddd55c8db0>

我希望第一行也返回文件对象。为什么返回整数?

1 个答案:

答案 0 :(得分:4)

语句x = File.open(...) do |f| ...x设置为do块的结果,而不是设置为返回的文件(在块完成后关闭)。所以你实际做的是将temp_image设置为f.write的结果,这是写入的字节数,而不是文件对象。