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

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

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

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

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

2 楼 已删除

如果保存在本地,不会比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 好用许多。

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