相关疑难解决方法(0)

使用carrierwave清理tmp目录

我使用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
Run Code Online (Sandbox Code Playgroud)

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

有办法清理tmp目录吗?

我在这里发现了这篇文章,但也无法理解,并没有解释简单的例子

编辑

我试着用控制台运行这个命令

CarrierWave.clean_cached_files!
Run Code Online (Sandbox Code Playgroud)

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

["/home/medBo/projects/my_project/public/uploads/tmp/1380732930-5006-6671","/hom??e/medBo/projects/my_project/public/uploads/tmp/1380754280-4623-3698" ....
Run Code Online (Sandbox Code Playgroud)

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

我试着在上面的链接中阅读更多内容,我发现了一个关于CarrierWave.clean_cached_files的特殊注意事项!:

特别注意事项

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

是什么意思:"这种方法打破了有多个版本的上传者"?(因为我在我的上传器类"拇指和大版本"中使用了两个版本):

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 …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails carrierwave

5
推荐指数
2
解决办法
6877
查看次数

标签 统计

carrierwave ×1

ruby-on-rails ×1