我正在使用carrierwave将图片上传到s3。而且工作正常,花花公子。但是default_url不是。
在我的上传器中,我将default_url设置为使用rails资产管道。
def default_url
ActionController::Base.helpers.asset_path("panOpen_v2/" + [version_name, "panopen_beta_logo_flat_white_med.png"].compact.join('_'))
end
所以那种工作正常。
src="/assets/panOpen_v2/panopen_beta_logo_flat_white_med-1ed9964153466e88fe64c422dbab98ca.png"
它创建了图像的链接,但它仍然链接到我的服务器而不是我的CDN。我剩下的所有资产都链接到我的CDN就好了,所以我知道我的CDN就可以设置rails。
有没有人有任何想法?
我想过将cdn url放在那里用于prod和staging env,但我不应该这样做。也许这是唯一的方法吗?
答案 0 :(得分:1)
我用我想过的东西来修复它。这是在prod和staging env。
期间预先加入CDN网址def default_url
if !(Rails.env.development? || Rails.env.test?)
"#{Settings.asset_host}#{ActionController::Base.helpers.asset_path("panOpen_v2/" + [version_name, "panopen_beta_logo_flat_white_med.png"].compact.join('_'))}"
else
ActionController::Base.helpers.asset_path("panOpen_v2/" + [version_name, "panopen_beta_logo_flat_white_med.png"].compact.join('_'))
end
end
Settings.asset_host
是我的CDN的网址。
这不是一个完美的解决方案。我宁愿不必那样做。因此,如果有人有更好的想法,我很乐意听到它。