我正在构建一个带有carrierwave和fog的rails应用程序,用于附件存储。在我的测试环境中,我使用了fog本地存储。
我正在寻找一种方法,以获得完整的附件路径与此配置。
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_url或my_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
发布于 2016-06-28 01:09:56
对我来说,答案是修改为carrierwave uploader类。
我有
def store_dir
"#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end这对于亚马逊网络服务S3来说很好,因为所有的S3特定信息都被插入在这个字符串之前。然而,为了让它也能与fog Local一起工作,我补充道:
if Rails.env.test?
def base_path
"#{File.expand_path(CONFIG.fog_local_root)}/#{CONFIG.fog_directory}/"
end
else
def base_path
''
end
endhttps://stackoverflow.com/questions/38042697
复制相似问题