Ruby 用silex提取背景中的图像维数

Ruby 用silex提取背景中的图像维数,ruby,shrine,Ruby,Shrine,我已经设置了直接上传到S3与神社。这很有效。其中,我启用了以下插件: Shrine.plugin :backgrounding Shrine.plugin :store_dimensions Shrine.plugin :restore_cached_data 如果我错了,请纠正我,但图像尺寸提取似乎是同步完成的。如果我让用户通过Uppy批量上传图像,然后将它们全部保存,这似乎需要很长时间 我想做的是异步执行图像维度提取-我不需要缓存文件可用的维度。如果可能的话,我希望在文件升级到商店时在后

我已经设置了直接上传到S3与神社。这很有效。其中,我启用了以下插件:

Shrine.plugin :backgrounding
Shrine.plugin :store_dimensions 
Shrine.plugin :restore_cached_data
如果我错了,请纠正我,但图像尺寸提取似乎是同步完成的。如果我让用户通过Uppy批量上传图像,然后将它们全部保存,这似乎需要很长时间


我想做的是异步执行图像维度提取-我不需要缓存文件可用的维度。如果可能的话,我希望在文件升级到商店时在后台这样做。有办法吗?

我实现这一点的方法是使用
:refresh\u metadata
插件,而不是我最初使用的
:restore\u cached\u data
。感谢Janko为我们指明了正确的方向

阅读源代码提供了一些有用的见解<代码>:store_dimensions插件本身并不会提取维度,而是将维度的宽度和高度添加到元数据散列中,以便在Shiele的基类中提取维度

通过使用
:还原缓存的\u数据
,每次分配都会执行此操作
:还原缓存的\u数据
:在内部刷新\u元数据,这样我们可以使用这些知识仅在文件升级到存储时调用它

我在初始值设定项中设置了
:backgrounding
:store\u dimensions
,因此最终上传程序可以简化为:

class ImageUploader < Shrine
  plugin :refresh_metadata
  plugin :processing

  process(:store) do |io, context|
    io.refresh_metadata!(context)
    io
  end
end
class-ImageUploader
这样,我们从Uppy获取的数据的持久化速度非常快,我们可以让后台作业在文件升级到存储时提取维度,以便以后使用

最后,若你们有关于神社的问题,我强烈推荐它的奉献。Janko不仅创造了一款令人惊叹的软件(说真的,去阅读源代码),而且还献身于支持社区,这是他应得的荣誉