рельсы - рендер шаблон и zip - PullRequest
1 голос
/ 16 апреля 2011

Я пытаюсь создать файл KML в Rails, что я успешно выполнил, но теперь я хочу также предоставить формат KMZ, который бы отображал файл index.kml и упаковывал его в архив. Вот где я в тупик. Я обновил MIME Types следующим образом.

Mime::Type.register_alias "application/vnd.google-earth.kml+xml", :kml
Mime::Type.register_alias "application/vnd.google-earth.kmz", :kmz

Вот мой формат блока

def index
    @map_items = Items.all
    respond_with(@map_items) do |format|  
      format.kml 
      format.kmz { NOT SURE WHAT IS BEST TO DO }
      format.georss 
    end
  end

Любая помощь будет высоко ценится. Спасибо!

1 Ответ

0 голосов
/ 06 июня 2011

Я нашел способ сделать это с помощью отложенной работы. Каждый раз, когда точки обновляются или создаются, я запускаю MapOverlayJob.

class MapsController < ApplicationController

  def overlay
    @points = Points.all
    return render_to_string("overlay.kml")
  end

end


class MapOverlayJob

  def initialize
    @s3_filename ||= "maps/overlay.kmz"
    @zip_filename ||= "overlay.kml"
  end

  def perform
    AWS::S3::S3Object.store(@s3_filename, 
                            build_kmz_file, 
                            S3_BUCKET, 
                            :access => S3_ACL, 
                            :content_type => Mime::KMZ)
  end

  private
    def build_kmz_file
      Zippy.new(@zip_filename => MapsController.new.overlay).data
    end

end
...