无论如何在Ruby中编写以下代码而不将文件写入磁盘?
temp_file = 'path/to/file.csv'
users = [a@b.c, c@b.a]
CSV.open(temp_file, "w") do |csv|
csv << data_for_report
end
Reports.sendreport users temp_file
File.delete(temp_file)
Run Code Online (Sandbox Code Playgroud)
Reports.sendreport附加一个文件并发送一封电子邮件,因此它需要是一个文件......
knu*_*nut 18
你可以用Tempfile.
Tempfile将文件写入光盘,因此它不适合您的请求.
但我认为Tempfile提供了您需要的一些功能:
当Tempfile对象被垃圾收集时,或者当Ruby解释器退出时,其关联的临时文件将被自动删除.
例:
require 'tempfile'
require 'csv'
data_for_report = [1,2,3,4]
temp_file = Tempfile.new('foo')
CSV.open(temp_file, "w") do |csv|
csv << data_for_report
end
Run Code Online (Sandbox Code Playgroud)
尝试使用 mmap gem 之一。如果库只采用文件名,那是您的选择。
但是,如果它可以接受类似文件的对象,则可以使用 StringIO。
您可能会考虑更改任何Reports内容,使其更加通用。这取决于它使用什么来创建邮件消息——这可能是微不足道的。
| 归档时间: |
|
| 查看次数: |
10467 次 |
| 最近记录: |