KML ファイルを作成するモデルがあります。その KML を文字列として扱い、それをメーラーに転送して配信します。
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 に直接書き込むことはできますか?