从AWS S3读取CSV文件时获取“Errno :: ENOENT:没有此类文件或目录@ rb_sysopen”

我有部署到Heroku的应用程序。 我添加了通过CSV上传用户的function。 为此,我提供了CSV上传function(二手Paperclip gem)。

这是我的代码,用于读取文件和创建新用户

def import(file) CSV.foreach(file.path, headers: true) do |row| row_hash = row.to_hash.values data = row_hash[0].split("\t") . . . end 

在当地它工作正常。 但是在heroku上,它给了我以下错误

 Errno::ENOENT: No such file or directory @ rb_sysopen - https://s3.amazonaws.com/..../..../sample_csv(2).csv 

我在amazon-s3中引用了以下链接Errno :: ENOENT(没有这样的文件或目录)

文件从亚马逊服务器读取,ruby在轨道上,没有匹配路由

但没有任何成功。 为了更多的调试,我从我的本地rails控制台尝试了相同的URL,它给了我同样的错误。

 2.2.2 :008 > cp = "https://s3.amazonaws.com/..../..../sample_csv(2).csv" 2.2.2 :008 > f = File.open(cp, "r") Errno::ENOENT: No such file or directory @ rb_sysopen - https://s3.amazonaws.com 

也试过打开uri http://ruby-doc.org/stdlib-2.1.0/libdoc/open-uri/rdoc/OpenURI.html 。

我可以从浏览器下载相同的文件。

任何人都可以告诉我如何解决此错误。 是否有任何存储桶权限问题(我已经为存储桶提供了开放访问权限)。

试试这个

 require 'open-uri' require 'csv' def import(file) CSV.new(open(file), :headers => :true).each do |row| #First open the file using open row_hash = row.to_hash.values data = row_hash[0].split("\t") . . . end 

有关详细信息,请参阅此链接