我正在构建一个带有载波和雾的rails应用程序,用于附件存储。在我的测试环境中,我使用雾本地存储。
我正在寻找一种方法来获得这种配置的完整附件路径。
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
来获取附件的完整网址。
但是,在使用Local
存储时,我只获得了my_object/my_attachment/1/test.jpg
等配置选项的相对路径。
有没有办法通过carrierwave或fog来获取这个本地文件的完整路径?
对于我的示例,我要查找的输出是:/Users/me/fog/test.myapp.com/my_object/my_attachment/1/test.jpg
答案 0 :(得分:0)
对我来说,答案是修改为carrierwave uploader类。
我有
def store_dir
"#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
适用于AWS S3,因为在此字符串之前插入了所有S3特定信息。但是,为了让它与雾Local
一起使用,我添加了:
if Rails.env.test?
def base_path
"#{File.expand_path(CONFIG.fog_local_root)}/#{CONFIG.fog_directory}/"
end
else
def base_path
''
end
end