我已经按照说明如何为 carrierwave uploads 定义特定于测试的存储目录,这建议打开CarrierWave::Uploader::Base
类并重新定义store_dir
,cache_dir
如下所示:
if defined?(CarrierWave)
CarrierWave::Uploader::Base.descendants.each do |klass|
next if klass.anonymous?
klass.class_eval do
def cache_dir
"#{Rails.root}/spec/support/uploads/tmp"
end
def store_dir
"#{Rails.root}/spec/support/uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
end
end
end
这就像一个魅力,除了当我用 spork 运行 rspec 时,它无法修改类并且上传存储在默认位置。有谁知道为什么会发生这种情况?