メールの添付ファイルから読み取った xls ファイルを操作する必要があります。パフォーマンス上の理由から、Roo gem を使用する必要があります。ここでの問題は、添付ファイルを Roo に渡すことです。Spreadsheet gem は StringIO を直接読み取ることができましたが、Roo にはそのような機能がないようです。(ファイルの代わりに Roo に StringIO オブジェクトを受け入れさせる方法はありますか? )
私はこの解決策を見つけました
attachment = mail.attachments.first
file = Tempfile.new(['attachment', '.xls'], :encoding => 'ascii-8bit')
file.write StringIO.new(attachment.body.decoded).read
excel = Roo::Excel.new(file.path)
しかし、削除したいファイルシステムに一時ファイルを書き込む必要があります。
仮想ファイルを作成する方法はありますか?