0

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 に直接書き込むことはできますか?

4

1 に答える 1