ruby-on-railsrubyrubygemsroo-gem

Getting Errno::ENOENT: No such file or directory @ rb_sysopen When trying to open remote file url in Roo gem(Ruby on rails)


I have stored an file in AWS s3 storage when trying to open an file to import data using roo gem, It raising following error Errno::ENOENT: No such file or directory @ rb_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

I even tried this also

spreadsheet = Roo::Spreadsheet.open(imported_file.file_url)

Getting below error in log

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

Solution

  • Finally following code is worked for me.

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