我有一个创建 KML 文件的模型。我将该 KML 视为一个字符串,然后将其转发给 mailer,然后再将其发送:
def write_kml(coords3d, time)
kml = String.new
kml << header
coords3d.each do |coords|
coordinates = String.new
coords.each do |coord|
lat = coord[0].to_f
lng = coord[1].to_f
coordinates << "#{lng}" + "," "#{lat}" + ",0 "
kml << polygon(coordinates)
end
end
kml << footer
kml
end
这在这里被使用:
CsvMailer.kml_send(kml,time, mode, email).deliver
邮寄者:
def kml_send(kml, time, mode, email)
@time = (time / 60).to_i
@mode = mode
gen_time = Time.now
file_name = gen_time.strftime('%Y-%m-%d %H:%M:%S') + " #{@mode.to_s}" + " #{@time.to_s}(mins)"
attachments[file_name + '(KML).kml'] = { mime_type: 'text/kml', content: kml}
mail to: email, subject: ' KML Filem'
end
它占用了大量的内存。其中一些文件非常大(200MB),例如在 Heroku 上,它们占用了太多空间。
我有一些使用 S3 的想法,但我需要先创建这个文件,所以它仍然会使用内存。我可以不使用内存直接写入 S3 吗?