[英]Rails rmagick gem on heroku can not find pictures
我有一個Rails應用程序,用戶可以在其中上傳汽車圖片,然后在滑塊上顯示它們。 我正在使用Carrierwave和RMagick。
我已將我的應用程序推送到heroku,並上傳了一些汽車圖片以及用戶個人資料圖片。
首先,heroku可以完美地顯示圖片,但是稍后,Heroku會在上傳的圖片上顯示加載錯誤(404未找到錯誤)。
我認為這可能是因為RMagick,因為當我推送應用程序時,它會警告RMagick貶值,而需要使用rmagick。
我的image_uploader.rb文件;
# encoding: utf-8
class ImageUploader < CarrierWave::Uploader::Base
include CarrierWave::RMagick
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
version :large do
process :resize_to_fill => [327, 282]
end
version :mid do
process :resize_to_fill => [217, 141]
end
end
圖片保存在public/uploads/picture/image/1/car_mid.png
編輯:
也許這可能是個問題? 我現在正在為Heroku使用免費帳戶。 Heroku沒有保存上傳的圖片 。 但是,當我上傳照片時,看到的圖片不久后便消失了。
編輯2:
上傳了一些汽車圖片之后,我立即通過heroku restart
命令重新啟動了heroku應用,這些圖片消失了(找不到404)。 那么,您是否認為問題出在我使用1 dyno免費帳戶的原因?
Heroku上的文件系統未持久。 “持久”僅保留通過部署機制(git push)上傳的文件。 就像你的那些其他public
文件夾都將被刪除。 這就是為什么他們消失了。
您在Heroku上的dyno具有一個“只讀”文件系統。 從某種意義上說,您的文件不會在dyno重新啟動之間保留下來,並且不能保證它們會在任何兩個請求之間保留下來。 這是文檔摘錄 :
每個dyno都有自己的臨時文件系統,不與任何其他dyno共享,一旦斷開連接,該文件系統將被丟棄。 該文件系統中填充了slug存檔,因此一次性dynos可以充分利用應用程序中部署的所有內容。
您可以將#{Rails.root}/tmp
文件夾用作臨時文件夾,但需要將文件上傳到某些外部存儲設備(S3,某些CDN等)。 Heroku有一些易於處理的插件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.