使用 Carrierwave 清理 tmp 目录

2023-11-27

我使用 Carrierwave 进行图像上传,在我的表单中,我添加了一个用于缓存的隐藏字段,如文档中所述。

= form_for @user, html: {multipart: true} do |f|
%p
  = f.label :image, "your image"
  = f.file_field :image, id: "img"
  = f.hidden_field :image_cache

但问题是上传图像并保存记录后,tmp 目录仍然包含所有临时/缓存文件。

有没有办法清理 tmp 目录?

我找到了这个帖子here但也不太明白,而且没有简单的例子解释

Edit

我尝试使用控制台运行此命令

CarrierWave.clean_cached_files!

它向我输出 tmp 目录中所有文件的数组,如下所示:

["/home/medBo/projects/my_project/public/uploads/tmp/1380732930-5006-6671","/hom‌​e/medBo/projects/my_project/public/uploads/tmp/1380754280-4623-3698" ....

但是当我去查看发生了什么时,我发现所有文件仍然存在于 /tmp 中(未删除)

我尝试在上面的链接中阅读更多内容,我发现了一个特殊的考虑因素CarrierWave.clean_cached_files! :

特别注意事项

此方法会破坏定义了多个版本的上传器。 您的第一个版本将被保存,但之后清理代码将 运行并删除用于生成附加文件的 tmp 文件 版本。在这种情况下,您最好创建一个 rake 任务 定期清理 tmp 文件夹。

什么意思:“此方法会破坏具有多个版本的上传器”? (因为我在上传器类“拇指和大版本”中使用两个版本):

class ImageUploader < 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
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end
  ...
  ...
  version :large do
    resize_to_limit(600, 600)
  end

  version :thumb do
    process :crop_image
    resize_to_fill(100, 100)
  end
...
...
end

我还尝试运行一个任务来查看 tmp/ 目录内的文件夹是否将被删除,但该任务不起作用:

task :delete_tmp_files do
   FileUtils.rm_rf Dir.glob("#{Rails.root}/public/uploads/tmp/*")
end

你试过打电话吗

CarrierWave.clean_cached_files!

在你的代码中还是从 Rails 控制台手动?有效吗?如果是这样,您可以将其放入日常任务中。你可以使用类似的东西每当宝石。它看起来像:

every 1.day, :at => '4:30 am' do
  runner "CarrierWave.clean_cached_files!"
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Carrierwave 清理 tmp 目录 的相关文章

随机推荐

  • ASP.NET MVC 获取视图的最后修改日期/文件信息

    我需要在工作申请的每一页上注明最后修改日期 我曾经通过在 WebForms 母版页底部包含对 的引用来实现此目的 该引用将返回当前 aspx 页面的上次修改日期 我的代码甚至会检查关联的 aspx cs 文件 比较上次修改日期 并返回最近的
  • .Net枚举winforms字体样式?

    我一直在寻找一种使用 Net 框架列出给定字体的有效字体样式的方法 即使我必须 pinvoke gdi32 或其他一些 API 因为并非所有字体都属于 System Drawing FontStyle 枚举值 粗体 斜体 常规 删除线 下划
  • 自定义WPF窗口样式

    我正在尝试制作自定义窗口样式 目标是创建一个可以被我的应用程序中的每个窗口使用的模板 模板包含工具栏 标题和 窗口将使用的区域 问题是 当我使用我的样式时 我无法再添加网格和控件 App xaml
  • 在 __init__ 上使用 scrapy 管道中的参数

    我有一个 scrapy pipelines py 我想获得给定的参数 在我的 Spider py 中 它工作得非常完美 class MySpider CrawlSpider def init self host domain id args
  • 从非托管代码调用托管 .NET 代码的最佳方法

    我试图找到从非托管 C 代码调用托管 NET 代码的最佳执行方法 我在我的 C 应用程序中找到了有关托管 NET 的信息 并且我能够创建 pRuntimeHost 并毫无问题地启动它 ExecuteInDefaultAppDomain 似乎
  • 如何让 iOS 上的 tesseract 运行得更快?

    我在 ios 上的 tesseract ocr 上遇到了困难 一切工作正常 但速度真的很慢 单行数字的识别时间为 2 3 秒 我正在阅读视频流 我正在使用 tesseract 3 01 以及针对我的字体的自定义训练文件 这是我所做的 设置
  • Rails 3 中控制器特定的样式表:继承

    首先 我是 Rails 的新手 我正在 Rails 网站上工作 它有三个控制器 即application controller static pages controllers 和 users controller 它们在 app asse
  • 在 Hibernate 验证期间执行 EntityManager 查询的正确方法

    我是一个 Java EE EJB 菜鸟 但从我收集的文档和其他帖子来看 您无法在实体验证期间使用相同的实体管理器 会话查询数据库 一般来说 可移植应用程序的生命周期方法不应调用 EntityManager 或查询操作 访问其他实体实例或修改
  • Haskell 和惰性 Monads 评估

    在使用 monad 时 我经常遇到评估问题 现在 我了解了延迟求值的基本概念 但我不明白如何在 Haskell 中延迟求值 monad 考虑下面的代码 module Main where import Control Monad impor
  • Django 删除文件字段

    我正在 Django 中构建一个网络应用程序 我有一个上传文件的模型 但无法删除该文件 这是我的代码 class Song models Model name models CharField blank True max length 1
  • Tomcat 引起:java.util.zip.ZipException:打开 zip 文件时出错

    我有一个 spring mvc 项目 但它抛出了Caused by java util zip ZipException error in opening zip file当我通过 Tomcat 运行它时 如何确定哪个 jar 文件没有正确
  • 如何在IIS7.5中启用ASP经典

    我在 Windows 7 中运行 IIS 7 5 并且已经进入 打开或关闭 Windows 功能 并在 Internet 信息服务 万维网服务 应用程序开发功能 中启用了 ASP 完成此操作后 我开始收到 HTTP 404 错误 由于扩展名
  • 替换日期时间日期中的年份

    我有一个带有一列的表 dateDT 格式为日期时间和年份的变量输入 selYear 在我的 Select 中 格式为 int 如何使用变量输入替换表中日期中的年份并以日期时间格式返回结果 在选择中 我已尝试以下操作 但这返回错误的日期 年份
  • 使用下划线 groupby 按颜色对一组汽车进行分组

    我有一系列的汽车 car make nissan model sunny colour red 我将如何使用 underscore js 按颜色对数组进行分组 我尝试了一些组合 但我不太确定如何指定我的迭代器条件 var carsGroup
  • OSError:无法打开共享对象文件:即使文件位于文件夹中,也没有此类文件或目录

    我已经为此奋斗了很长一段时间了 我正在尝试安装 Yaafe 来提取音频特征 我按照这里的说明操作 https github com Yaafe Yaafe 一切都安装得很好 但是当我尝试运行测试文件 frames py 时 出现以下错误 F
  • C - 在内存被释放()后访问数据?

    我读了很多关于标准 C 中的 malloc 和 free 的内容 据我了解 您malloc 只为了一次记忆 然后你free 同样的记忆只有一次 这可能是不好的做法 但我明白 在你之后malloc 内存 您可以定义多个指向它的指针 而一旦你f
  • 酸洗 scipy interp1d 样条

    我想知道有没有简单的腌制方法interp1dscipy 中的对象 这种天真的方法似乎不起作用 import pickle import numpy as np from scipy interpolate import interp1d x
  • OpenMP 和 NUMA 的关系?

    我有一台双路 Xeon E5522 2 26GHZ 机器 禁用超线程 在支持 NUMA 的 Linux 内核 3 0 上运行 ubuntu 服务器 架构布局为每个插槽 4 个物理核心 OpenMP 应用程序在这台机器上运行 我有以下问题 在
  • 如何创建Python卷积核?

    我正在尝试创建一个卷积核 中间值为 1 5 不幸的是 我不断地想出如何做到这一点的想法 我正在尝试创建类似的东西 Array 0 1 0 1 1 5 1 0 1 0 由于 OpenCV 使用 Numpy 来显示图像 因此您可以简单地使用 N
  • 使用 Carrierwave 清理 tmp 目录

    我使用 Carrierwave 进行图像上传 在我的表单中 我添加了一个用于缓存的隐藏字段 如文档中所述 form for user html multipart true do f p f label image your image f