我有部署到Heroku的应用程序。我添加了通过CSV上传用户的功能。为此,我提供了CSV上传功能(二手回形针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(没有这样的文件或目录)
但没有成功。为了进行更多调试,我从本地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
有关更多信息,您可以参考此链接
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句