Rails 4 carrierwave default_url不使用cdn

时间:2014-05-02 14:25:51

标签: ruby-on-rails-4 amazon-s3 carrierwave cdn fog

我正在使用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,但我不应该这样做。也许这是唯一的方法吗?

1 个答案:

答案 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的网址。

这不是一个完美的解决方案。我宁愿不必那样做。因此,如果有人有更好的想法,我很乐意听到它。