Carrierwave测试 - 清理或分离文件上传?

时间:2017-02-21 08:27:50

标签: ruby-on-rails testing carrierwave

我想要一些反馈和/或帮助。

我正在接受这个测试

scenario 'can create a new post' do

    attach_file('Image', 'spec/files/hello-world.png')
    fill_in 'Caption', with: 'Hello World! This is the first post!'
    click_button 'Create Post'

    expect(page).to have_css("img[src*='hello-world.png']")
    expect(page).to have_content('Post was successfully created')
end

此测试通过Carrierwave将图像上传到uploads/post/image/1/hello-world.png,这可能是开发环境中的相同路径等,所以我想知道这是否会导致文件和帖子之间出现任何问题。

我的问题是,我是否需要在每个环境中单独保存文件上传内容,还是Rails可以在内部管理?

1 个答案:

答案 0 :(得分:0)

存储文件的位置是defined in a Carrierwave Uploader by the method store_dir。如果您需要分离在不同环境中创建的文件,最简单的解决方案是将Rails.env添加到路径中:

def store_dir
  @store_dir ||= File.join(
    'public',
    'uploads',
    Rails.env,
    model.class.table_name.to_s,
    mounted_as.to_s,
    model.id.to_s   
  )
end

这会创建一条路径:public/uploads/production/posts/image/1/image.png