6

trong dự án RoR của tôi Tôi đang sử dụng CarrierWave + MiniMagick và triển khai cho Heroku để sản xuất.Heroku, CarrierWave, MiniMagick: tệp tmp ngẫu nhiên bị thiếu

Tôi gặp sự cố này khi sản xuất đôi khi tệp tmp bị thiếu để xử lý hình ảnh. Tôi nhận được lỗi này:

Errno::ENOENT: No such file or directory - /tmp/mini_magick20130319-2-3wq6l6.jpg

tôi có các lớp học XUploader khác mà làm việc nhưng có một đặc biệt này có hai quá trình hình ảnh. Ban đầu, tôi có hai quy trình riêng cho việc này:

process :resizer 
    def resizer 
    resize_to_fit(model.jrac_image_width, model.jrac_image_height) 
    end 

    process :cropper 
    def cropper 
    manipulate! do |img| 
     img.crop("442x190+#{model.jrac_crop_x}+#{model.jrac_crop_y}") 
     img 
    end 
    end 

nhưng nó cho biết tôi gặp lỗi trên :cropper nói rằng tệp tmp không tồn tại. Tôi đã cố gắng thay đổi mã này, hy vọng nó sẽ chỉ hoạt động trên đó một lần:

process :resize_and_crop 
    def resize_and_crop 
    manipulate! do |img| 
     img.resize("#{model.jrac_image_width}x#{model.jrac_image_height}") # resize_to_fit 
     img.crop("442x190+#{model.jrac_crop_x}+#{model.jrac_crop_y}") # cropper 
     img 
    end 
    end 

nhưng không may, vẫn gặp lỗi tương tự.

Có ai có bất kỳ ý tưởng nào về sự cố không? Tôi không biết nếu nó với Heroku hoặc CarrierWave hoặc ImageMagick?

Sửa

Tôi cũng có mã này vào Uploader lớp học của tôi

def cache_dir 
    "#{Rails.root}/tmp/uploads" 
    end 

như đối với document này.

Trả lời

0

heroku sẽ trống tmp theo thời gian, thông thường, chúng tôi sử dụng s3 hoặc bộ nhớ đám mây khác để lưu trữ phiên bản đã xử lý. Bạn có thể tham khảo https://github.com/jnicklas/carrierwavehttps://github.com/jnicklas/carrierwave/wiki/How-to%3A-Make-Carrierwave-work-on-Heroku

Họ đã trình bày chi tiết về việc sử dụng hương carrierwave trong Heroku Tôi đã cố gắng mà trước và nó hoạt động

+0

Ồ vâng xin lỗi. Tôi có điều này trong lớp 'Uploader' của tôi:' def cache_dir; "# {Rails.root}/tmp/tải lên"; kết thúc' – index