簡體   English   中英

Heroku上的Rails rmagick gem找不到圖片

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM