Rails Active Storage 的文档过了一遍,觉得如果是保存在云,是个不错的选择,可是是不是不适合保存在本地?

QueXuQ · 2018年04月18日 · 最后由 bastengao 回复于 2018年04月26日 · 3721 次阅读

Active Storage文档:http://edgeguides.rubyonrails.org/active_storage_overview.html

因为文档里,生产环境都是使用 S3,是不是意味着,如果希望直接保存在服务器上,还是使用carrierwave合适。

还有一个问题就是,因为我用腾讯的云服务,可是没有看到相关云存储的 gem,而阿里和七牛都有,所以选择七牛会更好?

1 楼 已删除

如果保存在本地,不会比carrierwave不适合~ 没啥区别呀。推荐 Active Storage

ActiveStorage 是统一的封装接口,和 ActiveJob 类似。

对 mingyuan0715 回复

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 用的吧。

对 gluttony 回复

保存在本地也是一个正当的需求,尤其是对小专案而言。个人在 production 上也有用 Active Storage 做本地保存,还算堪用。 不过实际上还是 Shrine 比较全方位一点。

ActiveStorage 是统一的封装接口,和 ActiveJob 类似。

其实我觉得这句好像不对。他真的是统一接口吗?感觉不能跟其他几种 gem 对接。

对 gluttony 回复

是的,所以我在想如果直接存 Disk 是不是就不如用 carrierwave 了。

使用本地存储时如果是单机应用还要考虑文件过多问题,carrierwave 提供了 hook 可以实现 partitioning 以及文件删除后的文件夹清扫,Disk Service 不知道提供了接口没

配置为 local 就可以吧

对 rainchen 回复

DiskService 还有一个挺好用的功能是 inline transform 例如 <%= image_tag user.avatar.variant(resize: "100x100") %>, 比 carrierwave 要事先定义 version 好用许多。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号