Hallo,

im Zuge der Umstellung von Rails 2.0.2 auf 2.1.0 bin ich auf eine Schwierigkeit beim Caching von generierten PDF-Dateien gestoßen.

Für das Generieren von PDFs verwende ich RTeX. Damit ich die PDF nicht bei jedem Abruf neu generieren muß, wird sie gecacht.

Den Code habe ich unten angefügt: die Methode cache_pdf wird als after_filter auf die Methode publish ausgeführt und schreibt response.body in eine Datei.

Das hat in der Rails-Version 2.0.2 gut funktioniert. In der neuen Rails-Version 2.1.0 wird jedoch die Datei nicht mehr der Inhalt der PDF geschrieben. In der geschriebenen Datei steht anstatt der PDF-Daten nun diese Zeile:

#<Proc:0x0178d970@/usr/local/lib/ruby/gems/1.8/gems/actionpack-2.1.0/lib/action_controller/streaming.rb:81>

Hat jemand eine Idee, was die Ursache sein könnte?

Viele Grüße

Michael Kastner

------------------------------------------------------------------
class PublicMagazinesController < PublicController

  layout nil

  self.append_view_path File.join(RAILS_ROOT, Properties.views_dir)

  after_filter :cache_pdf, :only => :publish

  DIR_URL  = '/cache/magazines/'
  DIR_PATH = File.join('/public/', DIR_URL)


  def publish
    @magazine = Magazine.find(params[:id])
    @file_path = File.join(RAILS_ROOT, DIR_PATH, @magazine.file_name)
    if File.exist? @file_path
      redirect_to File.join(DIR_URL, @magazine.file_name)
    else
      @do_cache = true
      render :template => @magazine.template,
             :filename   => @magazine.file_name,
             :preprocess => true
    end
  end

  private
  def cache_pdf
    if @do_cache
      FileUtils.makedirs(File.dirname(@file_path))
      File.open(path, "wb+") { |f| f.write(response.body) }
    end
  end

end
_______________________________________________
rubyonrails-ug mailing list
[email protected]
http://mailman.headflash.com/mailman/listinfo/rubyonrails-ug

Antwort per Email an