【发布时间】:2019-02-17 18:40:16
【问题描述】:
我在我的 Carrierwave Uploader 上引入了一个新版本。当我创建一个新的Event 时,它会正确创建两个版本。但是当我更新它时,只会上传我附加的文件,但不会重新创建版本。
我正在使用CarrierWave 1.2.2,查看更新日志,它似乎不是在较新版本中修复的错误
class CoverUploader < CarrierWave::Uploader::Base
include CarrierWave::MiniMagick
if Rails.env.development? || Rails.env.test?
storage :file
elsif Rails.env.production?
storage :fog
end
# 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
if ENV['HEROKU_APP_NAME'].to_s.include?('-pr-')
"review_apps/#{model.class.to_s.underscore}/#{model.id}"
else
"#{Rails.env}/#{model.class.to_s.underscore}/#{model.id}"
end
end
# Provide a default URL as a default if there hasn't been a file uploaded:
def default_url(*args)
ActionController::Base.helpers.asset_path('test.jpg')
end
# Create different versions of your uploaded files:
version :optimised do
process convert: 'webp'
process :set_content_type_to_webp
def full_filename(_for_file = model.cover.file)
"cover_#{model.id}.webp"
end
def exists?
file&.exists?
end
end
def extension_blacklist
%w(webp)
end
private
# Required to actually force Amazon S3 to treat it like an image
def set_content_type_to_webp
file.instance_variable_set(:@content_type, 'image/webp')
end
end
【问题讨论】:
-
也许您正在寻找 Carrierwave 提供的
recreate_versions!命令 (github.com/carrierwaveuploader/carrierwave#recreating-versions)? -
我想它会起作用,但我期待
update为我做这件事。更重要的是,它似乎以某种方式被调用,因为在保存新图像后,旧的 :optimized 版本消失了,剩下的就是标准的新上传的图像。这又不是我所期望的行为,我还没有在另一个做类似事情的项目上看到这个问题@AnujKhandelwal -
请更新载波版本
-
@ogelacinyc 我检查了更新日志,自从我的版本 - 1.2.2 以来,没有任何改变可能会影响到这一点。我可以尝试升级,因为这并没有什么坏处,但这只是一个随机的建议还是你真的有什么想法?
-
@MaximFedotov 不。有某种误解。我的评论的意思是评论您当前的载波版本。对此我很抱歉。
标签: ruby-on-rails ruby ruby-on-rails-5 carrierwave