Carrierwave 和 Heroku 不适用于播种

Carrierwave and Heroku does not work with seeding

我这样配置了一个载波上传器:

class PortraitUploader < CarrierWave::Uploader::Base

    # Include RMagick or MiniMagick support:
    include CarrierWave::RMagick
    # include CarrierWave::MiniMagick

    # Choose what kind of storage to use for this uploader:
    storage :file
    # storage :fog

    # Override the directory where uploaded files will be stored.
    # This is a sensible default for uploaders that are meant to be mounted:
    def store_dir
        "#{Rails.root}/public/images/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
    end

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

我的种子是这样的:

Portrait.create({
    main: true,
    image: open('http://some-image-out-there.jpg'),
    customer: @hatakeda
})

开发中 100%。

将我的应用程序上传到 Heroku 时,我仍然可以使用上传器手动设置图像,通过上传或发送 url

然而,您的种子创建的图像 url 不显示图像 - 404 错误。

如何让 Carrierwave、Heroku 和我的 seeding 愉快地协同工作?

您要在 heroku 上存储图像吗?简短回答:你不能,因为 Heroku 是只读的 (ephemeral writeable filesystem)。如果上传有效,这些文件将在您的下一次部署期间或工作人员出于任何原因重新启动时被擦除。看看Carrierwave store images locally not on s3 at heroku.