【问题标题】:Make CarrierWave to not copy original file for versions使 CarrierWave 不复制版本的原始文件
【发布时间】:2012-06-04 05:27:34
【问题描述】:

据我了解,对于上传器中定义的每个 version,CarrierWave 会将原始文件从缓存复制到 tmp 路径,并将此 tmp 文件移交给为此版本定义的任何处理。然后它可以存储所有文件。有时(例如,在为视频文件生成缩略图时)这种复制可能会非常昂贵。我可以让 CarrierWave 不复制并让我在原始文件处于缓存时生成版本吗?

编辑我有move_to_cachemove_to_store 来返回false true(哎呀,我很快忘记了自己的脑袋)。并且我在CarrierWave::RMagick这行写了一个测试处理模块:

module CarrierWave
  module Thumbnailer
    def generate_thumbnails
      debugger
      x = 1
    end
  end
end

我在上传器中有以下几行

version :thumb do
  process :generate_thumbnails
end

但是当在debugger(我可以开始处理)上停止执行时,CarrierWave 已经复制并重命名了上传的文件。我可以在缓存目录中看到它们。

【问题讨论】:

    标签: ruby-on-rails carrierwave


    【解决方案1】:

    查看自述文件中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 时,文件 将被分别移动(而不是复制)到缓存和存储中。

    【讨论】:

    • 我已将其设置为 false。但这会影响上传文件如何从网络服务器处理到 CarrierWave 缓存和存储。它与版本无关。对吗?
    • 我可能应该按照“lib/carrierwave/processing/rmagick.rb”的方式编写自定义处理模块
    • move_to_cache 和 move_to_store 返回 true,我按照自述文件中的建议进行操作,在此处发布时出错。对不起
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2018-07-22
    • 1970-01-01
    相关资源
    最近更新 更多