Carrierwave临时目录设置为上传/ tmp文件夹

lul*_*ala 14 ruby-on-rails carrierwave

我开始使用Carrierwave,我发现它在多个地方存储临时文件,具体取决于它是测试还是延迟工作.

如果在测试期间(rspec)完成,则临时文件将位于RAILS_ROOT/uploads/tmp目录中.

如果在延迟作业期间完成,则临时文件将为 RAILS_ROOT/public/uploads/tmp

首先,我认为这rails_root/tmp/uploads将是一个更明智的地方,甚至系统临时文件夹.

其次,测试与正常运行不同似乎是一个bug.

有没有办法解决这个问题(通过配置或猴子修补)?我可以把东西放在RAILS_ROOT/tmp文件夹中吗?

Art*_*rov 20

config.cache_dir选项,您可以在"配置/初始化/ carrierwave.rb"设置.但它与'/ public'相关.看起来你应该在你的上传者中这样做:

class MyUploader < CarrierWave::Uploader::Base

  def cache_dir
    # should return path to cache dir
    Rails.root.join 'tmp/uploads'
  end
end
Run Code Online (Sandbox Code Playgroud)


Mar*_*llo 7

我使用carrierwave 0.10.0,似乎这个行为得到了解决.现在该cache_dir设置接受公共目录之外的路径:

CarrierWave.configure do |config|
  config.cache_dir = Rails.root.join 'tmp/uploads'
end
Run Code Online (Sandbox Code Playgroud)