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