Ruby on rails 获取Errno::enoint:在Roo gem(Ruby on rails)中尝试打开远程文件url时,没有此类文件或目录@rb_sysopen

Ruby on rails 获取Errno::enoint:在Roo gem(Ruby on rails)中尝试打开远程文件url时,没有此类文件或目录@rb_sysopen,ruby-on-rails,ruby,rubygems,roo-gem,Ruby On Rails,Ruby,Rubygems,Roo Gem,当我试图使用roogem打开文件导入数据时,我在AWS s3存储中存储了一个文件,这会引发以下错误Errno::enoint:没有这样的文件或目录@rb\u sysopen def self.import(file, user_id) imported_file = ImportedFile.find(file) spreadsheet = Roo::Spreadsheet.open(open(imported_file.file_url), extension:

当我试图使用roogem打开文件导入数据时,我在AWS s3存储中存储了一个文件,这会引发以下错误
Errno::enoint:没有这样的文件或目录@rb\u sysopen

def self.import(file, user_id)
        imported_file = ImportedFile.find(file)
        spreadsheet = Roo::Spreadsheet.open(open(imported_file.file_url), extension: :csv)
        spreadsheet = Roo::Spreadsheet.open(imported_file.file)
      header = spreadsheet.row(1)//raising error here
end
我甚至还试过这个

spreadsheet = Roo::Spreadsheet.open(imported_file.file_url)
在日志中获取以下错误

Errno::ENOENT: No such file or directory @ rb_sysopen - /uploads/imported_files/7a6f0463-b3cd-48f8-a579-bc27951242fe/13c96e3e-d3f3-4ed8-8d9a-b9ea03c0cc8c.csv

要打开URL,首先需要
打开uri
库:

require 'open-uri'
请参见示例:

open('http://example.com/')
# throws Errno::ENOENT: No such file or directory @ rb_sysopen - http://example.com/

require 'open-uri'
open('http://example.com/')
# opens the website

最后,下面的代码为我工作

spreadsheet = Roo::Spreadsheet.open(open(imported_file.file_url), extension: File.extname(imported_file.file_url).gsub('.','').to_sym) rescue nil

看起来不像是一个完整的URL@neuhaus,我尝试使用完整url,后跟https,header=spreadsheet.row(1),Errno::enoint:没有这样的文件或目录rb_sysopen-/uploads/imported_files/7a6f0463-b3cd-48f8-a579-bc27951242fe/13c96e3e-d3f3-4ed8-8d9a-b9ea03c08c.csvI接受你的答案,但它无法使用电子表格=Roo::spreadsheet.open(open(imported_file.file_url)),错误:无法检测/tmp/open-uri20171011-8816-ckswos的类型-请使用:扩展名选项声明其类型。但是在将扩展名与这个电子表格一起传递=Roo::spreadsheet.open(open(imported_file.file_url),extension::csv)之后,它工作得很好,但我认为这不是一个完美的解决方案。我相信Roo正试图——毫无疑问地——通过扩展名猜测文件类型,然后
openuri
将url下载到一个临时文件,这就是您需要设置扩展的原因。我不建议使用
rescue nil
隐藏所有异常,因为它可能会隐藏很多问题。您需要
打开uri
吗?@KARASZI István,如果不需要它,它是不需要的