6

在我的RoR項目中我使用CarrierWave + MiniMagick並部署到Heroku進行生產。Heroku,CarrierWave,MiniMagick:隨機tmp文件丟失

我在生產中有這個問題,有時圖像處理tmp文件丟失。我得到這個錯誤:

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

我還有其他XUploader類的作品,但這個特殊的有兩個圖像處理。起初我對這個兩個獨立的過程:

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 

,但它說我是在:cropper有錯誤,說的tmp文件不存在。我試圖更改代碼到這一點,希望這將只在它的工作一次:

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 

但遺憾的是,仍然遇到同樣的錯誤。

有沒有人有任何想法問題的地方?我不知道它是用Heroku還是CarrierWave還是ImageMagick?

編輯

我也有這個代碼在我Uploader

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

爲這個document

回答

0

heroku會不定時清空tmp,通常我們會使用s3或其他雲存儲來存儲處理後的版本。你可以參考https://github.com/jnicklas/carrierwavehttps://github.com/jnicklas/carrierwave/wiki/How-to%3A-Make-Carrierwave-work-on-Heroku

他們有詳細的演練在Heroku的 使用carrierwave我已嘗試之前,它的工作原理

+0

哦,是對不起。我在'Uploader'類中有這個:'def cache_dir; 「#{Rails.root}/TMP /上傳」; end' – index 2013-04-29 04:56:03