【发布时间】:2014-06-12 01:27:20
【问题描述】:
我正在尝试编写一个涉及使用 Carrierwave 上传的文件的集成测试。我有以下配置:
CarrierWave.configure do |config|
if Rails.env.test?
config.storage = :file
config.enable_processing = false
else
# other configs
end
end
我的上传器将存储路径设置为:
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
这样做的结果是文件存储在public/uploads 中。但是当我尝试通过模型上的doc.url 方法访问此文件时,它会返回类似/uploads/... 的路径,并且在运行我的集成规范时出现以下错误:
unable to open file `/uploads/doc/paper/1/img_1.png'
我可以确认该文件确实存在于/public/uploads 目录中。如何让 Carrierwave 返回上传图像的正确路径?我可以将它与 Rails.root.join('public', doc.url) 一起修补,但这会在我们上传到 S3 的地方中断生产。
【问题讨论】:
标签: ruby-on-rails capybara carrierwave