据我所知,对于上传者中定义的每个version
,CarrierWave会将原始文件从缓存复制到tmp路径,并将此tmp文件移交给此版本定义的任何处理。然后它可以存储所有文件。有时(例如,当生成用于视频文件的缩略图时),这种复制可能非常昂贵。我可以让CarrierWave不复制并让我在缓存中生成原始文件的版本吗?
修改我有move_to_cache
和move_to_store
返回 false 为真(哎呀我很快忘记了自己的脑袋)。我在CarrierWave::RMagick
:
module CarrierWave
module Thumbnailer
def generate_thumbnails
debugger
x = 1
end
end
end
我在上传器中有以下几行
version :thumb do
process :generate_thumbnails
end
但是当debugger
(我可以开始处理的地方)停止执行时,CarrierWave已经复制并重命名了上传的文件。我可以在缓存目录中看到它们。
答案 0 :(得分:2)
查看自述文件中的Large Files ...下的自述文件:
class MyUploader < CarrierWave::Uploader::Base
def move_to_cache
true
end
def move_to_store
true
end
end
当move_to_cache和/或move_to_store方法返回true时,文件 将被分别移动(而不是复制)到缓存和存储。