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:
Hat jemand eine Idee, was die Ursache sein könnte?
Viele Grüße
Michael K.
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