Active Storage
文档:http://edgeguides.rubyonrails.org/active_storage_overview.html
因为文档里,生产环境都是使用 S3,是不是意味着,如果希望直接保存在服务器上,还是使用carrierwave
合适。
还有一个问题就是,因为我用腾讯的云服务,可是没有看到相关云存储的 gem,而阿里和七牛都有,所以选择七牛会更好?
development 就有,可是文档里没有说 production 有存本地的方式啊,好像也没有介绍存本地的话,目录结构会是怎么样呢。
就用 Disk Service 啊 http://guides.rubyonrails.org/active_storage_overview.html#disk-service
实际中一扩容服务器就会遇到文件系统扩展的问题,几乎都会上云储存。
It comes with a local disk-based service for development and testing and supports mirroring files to subordinate services for backups and migrations.
@Rei_mk2 文档开头这句话的意思,local disk-based service 只是为了 development 和 test 用的吧。
保存在本地也是一个正当的需求,尤其是对小专案而言。个人在 production 上也有用 Active Storage 做本地保存,还算堪用。 不过实际上还是 Shrine 比较全方位一点。
ActiveStorage 是统一的封装接口,和 ActiveJob 类似。
其实我觉得这句好像不对。他真的是统一接口吗?感觉不能跟其他几种 gem 对接。
使用本地存储时如果是单机应用还要考虑文件过多问题,carrierwave 提供了 hook 可以实现 partitioning 以及文件删除后的文件夹清扫,Disk Service 不知道提供了接口没
DiskService 还有一个挺好用的功能是 inline transform 例如 <%= image_tag user.avatar.variant(resize: "100x100") %>
, 比 carrierwave 要事先定义 version 好用许多。