tôi cần phải sử dụng các thư mục tmp
trên Heroku (Cedar) vì đã viết một số tạm thời dữ liệu, tôi đang cố gắng để làm điều đó theo cách này:Heroku - cách viết vào thư mục "tmp"?
open("#{Rails.root}/tmp/#{result['filename']}", 'wb') do |file|
file.write open(image_url).read
end
Nhưng lỗi sản phẩm này
Errno::ENOENT: No such file or directory - /app/tmp/image-2.png
tôi đang cố gắng mã này và nó chạy đúng trên localhost, nhưng tôi không thể làm cho nó hoạt động trên Heroku.
Cách thích hợp để lưu một số tệp vào thư mục tmp
trên Heroku (ngăn xếp Cedar) là gì?
Cảm ơn bạn
EDIT: Tôi đang chạy phương pháp với Jobs hoãn mà cần phải có quyền truy cập vào các tập tin tmp.
EDIT2: Những gì tôi đang làm:
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
tôi có trong cơ sở dữ liệu thông tin về hình ảnh. Những hình ảnh này được lưu trữ trong thùng S3 của Amazon. Tôi cần tạo hình thu nhỏ cho những hình ảnh này. Vì vậy, tôi sẽ đi qua một hình ảnh bằng cách khác, tải hình ảnh, tạm thời lưu nó, sau đó thay đổi kích cỡ nó và sau đó tôi sẽ tải hình thu nhỏ này lên thùng S3.
Nhưng thủ tục này dường như không hoạt động trên Heroku, vì vậy, làm thế nào tôi có thể làm điều đó (ứng dụng của tôi đang chạy trên Heroku)?
Kể từ khi nó nói rằng không có thư mục trong bản vá này, có lẽ bạn nên tạo trước khi sử dụng? Hay bạn muốn biết tmp tiêu chuẩn trên heroku ở đâu? – fotanus
hãy nhớ rằng heroku có những hạn chế nghiêm trọng đối với hệ thống tệp! https://devcenter.heroku.com/articles/dynos#ephemeral-filesystem – phoet
Ngay cả khi yêu cầu ứng dụng đã tạo tệp tmp, tệp có nhiều khả năng bị mất, nếu các công việc bị trì hoãn xuất hiện sau này. – spickermann