首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以在Refile initializer中为Rails 4项目中的不同功能配置单独的S3存储桶吗?

我可以在Refile initializer中为Rails 4项目中的不同功能配置单独的S3存储桶吗?
EN

Stack Overflow用户
提问于 2015-09-07 21:23:40
回答 2查看 411关注 0票数 2

我在Rails 4项目中使用Refile gem将图片上传到S3。我的要求是将不同功能的图片上传到S3上的两个不同的存储桶中。

但是,我可以找到仅设置一个存储桶的文档。有没有什么办法可以用Refile配置多个S3存储桶?

EN

回答 2

Stack Overflow用户

发布于 2015-11-16 01:55:00

基于Simone的信息,我在自己的项目中实现了代码,因此它可以有效地工作。

Refile.storeRefile.cache包含在Refile的构造函数中,是Refile.backends['store']Refile.backends['cache']的快捷方式。因此,您只需要将后端添加到@backends散列中。

代码语言:javascript
复制
aws_base = {
  access_key_id: ENV['S3_ACCESS_KEY'],
  secret_access_key: ENV['S3_SECRET_KEY'],
  region: ENV['S3_REGION'],
}

aws_1 = aws_base.merge({bucket: "bucket-1"})
aws_2 = aws_base.merge({bucket: "bucket-2"})
cache = aws_base.merge({bucket: "caches"})

Refile.backends["backend_1"] = Refile::S3.new(prefix:"store", **aws_1)
Refile.backends["backend_2"] = Refile::S3.new(prefix:"store", **aws_2)
Refile.backends["shared_cache"] = Refile::S3.new(prefix:"store", **cache)

这就是如何设置不同的后端,要单独使用它们,您只需在附件初始化器中按名称对它们进行寻址。

代码语言:javascript
复制
class FirstObject < ActiveRecord::Base
  attachment :images, store: 'backend_1', cache: 'shared_cache'
end

class SecondObject < ActiveRecord::Base
  attachment :images, store: 'backend_2', cache: 'shared_cache'
end
票数 2
EN

Stack Overflow用户

发布于 2015-09-07 21:48:38

是的,这应该是可能的。重新归档has a registry where it stores the various backends,默认情况下,它使用的backend called storeinitialized on boot

由于您可以使用configure the backend name per model,因此只需注册指向不同存储桶的新后端(例如store_foostore_bar),并在配置相应的模型时传递名称。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32439814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档