ich die tmp
Ordner auf Heroku (Cedar) zum Schreiben einiger vorübergehend Daten verwenden muß, versuche ich, dass diese Art und Weise zu tun:Heroku - wie in "tmp" Verzeichnis schreiben?
open("#{Rails.root}/tmp/#{result['filename']}", 'wb') do |file|
file.write open(image_url).read
end
Aber diese produzieren Fehler
Errno::ENOENT: No such file or directory - /app/tmp/image-2.png
Ich versuche, dieser Code und es läuft ordnungsgemäß auf localhost, aber ich kann es nicht auf Heroku machen.
Was ist der richtige Weg, um einige Dateien in das Verzeichnis tmp
auf Heroku (Cedar Stack) zu speichern?
Danke
EDIT: I-Verfahren mit verzögertem Jobs laufen bin, die benötigte Zugriff auf die tmp-Datei hat.
EDIT2: Was ich tue:
files.each_with_index do |f, index|
unless f.nil?
result = JSON.parse(buffer)
filename = "#{Time.now.to_i.to_s}_#{result['filename']}" # thumbnail name
thumb_filename = "#{Rails.root}/tmp/#{filename}"
image_url = f.file_url+"/convert?rotate=exif"
open("#{Rails.root}/tmp/#{result['filename']}", 'wb') do |file|
file.write open(image_url).read
end
img = Magick::Image.read(image_url).first
target = Magick::Image.new(150, 150) do
self.background_color = 'white'
end
img.resize_to_fit!(150, 150)
target.composite(img, Magick::CenterGravity, Magick::CopyCompositeOp).write(thumb_filename)
key = File.basename(filename)
s3.buckets[bucket_name].objects[key].write(:file => thumb_filename)
# save path to the new thumbnail to database
f.update_attributes(:file_url_thumb => "https://s3-us-west-1.amazonaws.com/bucket/#{filename}")
end
end
ich in der Datenbank Informationen über Bilder haben. Diese Bilder werden im Amazon S3-Bucket gespeichert. Ich muss Thumbnails zu diesen Bildern erstellen. Ich gehe also ein Bild durch ein anderes Bild, lade das Bild, speichere es temporär und verkleinere es anschließend und anschließend werde ich dieses Thumbnail in S3 Bucket hochladen.
Aber dieses Verfahren scheint nicht auf Heroku zu funktionieren, also, wie könnte ich das tun (meine App läuft auf Heroku)?
Da es sagt, dass es kein Verzeichnis in diesem Patch ist, sollten Sie vielleicht schaffen es vor der Verwendung? Oder willst du wissen wo das Standard Tmp auf Heroku ist? – fotanus
Denken Sie daran, dass Heroku das Dateisystem stark einschränkt! https://devcenter.heroku.com/articles/dynos#ephemeral-filesystem – phoet
Auch wenn eine Anfrage an die App eine tmp-Datei erstellt hat, ist die Datei wahrscheinlich verschwunden, wenn die verzögerten Jobs später kommen. – spickermann