我需要使用在Heroku(雪松)的tmp
文件夾寫了一些暫時的數據,我想這樣做是這樣的:Heroku - 如何寫入「tmp」目錄?
open("#{Rails.root}/tmp/#{result['filename']}", 'wb') do |file|
file.write open(image_url).read
end
但這農產品錯誤
Errno::ENOENT: No such file or directory - /app/tmp/image-2.png
我想這段代碼和它在本地主機上運行正常,但我無法使它在Heroku上工作。
將Heroku(Cedar堆棧)上的某些文件保存到tmp
目錄的正確方法是什麼?
謝謝
編輯: 我跑法延遲喬布斯需要訪問的tmp文件。
EDIT2: 我在做什麼:
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
我有關於圖像數據庫的信息。這些圖像存儲在Amazon S3存儲桶中。我需要爲這些圖像創建縮略圖。因此,我正在通過另一個圖像瀏覽一個圖像,加載圖像,暫時保存圖像,然後調整圖像大小,之後我會將此縮略圖上傳到S3存儲桶。
但是,這個過程似乎並沒有在Heroku上工作,所以,我怎麼能這樣做(我的應用程序在Heroku上運行)?
既然說有在這個補丁中沒有目錄,也許你應該創建它在使用之前?或者你想知道heroku的標準tmp在哪裏?請記住 – fotanus
,那個heroku對文件系統有嚴重的限制! https://devcenter.heroku.com/articles/dynos#ephemeral-filesystem – phoet
即使對應用程序的請求創建了一個tmp文件,如果延遲的作業稍後出現,該文件很可能已經消失。 – spickermann