首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Carrierwave fog本地存储完整连接路径

Carrierwave fog本地存储完整连接路径
EN

Stack Overflow用户
提问于 2016-06-27 04:04:55
回答 1查看 908关注 0票数 0

我正在构建一个带有carrierwave和fog的rails应用程序,用于附件存储。在我的测试环境中,我使用了fog本地存储。

我正在寻找一种方法,以获得完整的附件路径与此配置。

代码语言:javascript
复制
CarrierWave.configure do |config|
  config.fog_credentials = {
    provider:               'Local',
    local_root:             '/Users/me/fog',
    endpoint:               '/Users/me/fog',
  }

  config.fog_directory  = 'test.myapp.com
  config.fog_public     = false
  config.fog_attributes = { 'Cache-Control' => 'max-age=315576000' }
end

当我使用任何其他存储选项(比如AWS S3)时,我只需执行my_object.my_attachment_urlmy_object.my_attachment.path即可获得附件的完整url。

但是,在使用Local存储时,我只能获得my_object/my_attachment/1/test.jpg等配置选项的相对路径。

有没有办法通过carrierwave或fog获得这个本地文件的完整路径?

对于我的示例,我要查找的输出将是:/Users/me/fog/test.myapp.com/my_object/my_attachment/1/test.jpg

EN

回答 1

Stack Overflow用户

发布于 2016-06-28 01:09:56

对我来说,答案是修改为carrierwave uploader类。

我有

代码语言:javascript
复制
def store_dir
  "#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end

这对于亚马逊网络服务S3来说很好,因为所有的S3特定信息都被插入在这个字符串之前。然而,为了让它也能与fog Local一起工作,我补充道:

代码语言:javascript
复制
if Rails.env.test?
  def base_path
    "#{File.expand_path(CONFIG.fog_local_root)}/#{CONFIG.fog_directory}/"
  end
else
  def base_path
    ''
  end
end
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38042697

复制
相关文章

相似问题

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