神社-无法再次阅读附件

时间:2019-12-16 16:10:26

标签: ruby-on-rails ruby rspec shrine

从Carrierwave迁移到Shrine后,某些测试开始失败。我注意到,从安装Shrine上传器的列中调用#read时,只能调用一次。再执行第二次#read将返回一个空字符串。也许我缺少一些配置,但是相同的代码适用于Carrierwave(我知道它是一个不同的上传器,但是对于我正在迁移到Shrine的内容,几乎不需要/几乎不需要更改代码库)

# shrine.rb -> for testing
require "shrine"
require "shrine/storage/s3"
require "shrine/storage/file_system"

Shrine.plugin :activerecord
Shrine.plugin :cached_attachment_data
Shrine.plugin :determine_mime_type, analyzer: :mime_types

Shrine.storages = {
    cache: Shrine::Storage::FileSystem.new(
      "public",
      prefix: "tmp/cache",
    ),
    store: Shrine::Storage::FileSystem.new(
      "public",
      prefix: "tmp",
    ),
  }
# carrierwave.rb -> for testing

...

config.storage = :file
config.enable_processing = false

1 个答案:

答案 0 :(得分:2)

在读取内容agian之前,必须重置“读取指针”。 您可以致电.rewind

  

Shrine能够上传任何实现方法#read,#rewind,#eof?的类似IO的对象。和#close,其行为与IO类相匹配。

有关详细信息,请参见getting_startedthis examle