Rails rmagick gem heroku上找不到图片

Rails rmagick gem on heroku can not find pictures

我有一个 rails 应用程序,用户可以在其中上传汽车图片,然后我将它们显示在滑块上。我正在使用 Carrierwave 和 RMagick。

我已经将我的应用程序推送到 heroku 并上传了一些汽车图片以及用户个人资料图片。

起初,heroku 可以完美显示图片,但一段时间后,Heroku 在上传图片时出现加载错误(404 未找到错误)。

我认为这可能是因为 RMagick,因为当我推送应用程序时,它会发出警告 RMagick is depreciated require rmagick instead。

我的 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 not saving uploaded pictures。但是当我上传时,我看到图片,过一会儿它们就消失了。

编辑2:

我在上传了一些汽车图片后立即通过 heroku restart 命令重新启动了 heroku 应用程序,但这些图片消失了(404 未找到)。那么,您认为问题是因为我使用 1 个 dyno 的免费帐户吗?

Heroku 上的文件系统未持久化。只有通过部署机制(git 推送)上传的文件是 "persisted"。 public 文件夹中的其他内容将被删除。这就是他们消失的原因。


我已经回答了 。这是一个引用:

您在 Heroku 上的 dyno 有一个 "read-only" 文件系统。从某种意义上说,您的文件不会在您的 dyno 重新启动之间持续存在,并且不能保证它们会在任何两个请求之间持续存在。这是一个 :

Each dyno has its own ephemeral file system, not shared with any other dyno, that is discarded as soon as you disconnect. This file system is populated with the slug archive so one-off dynos can make full use of anything deployed in the application.

您可以使用#{Rails.root}/tmp 文件夹作为临时文件夹,但您需要将文件上传到一些外部存储(S3、一些CDN 等)。 Heroku 有一些插件,使其易于处理。