config.action_controller.asset_host的条件配置

时间:2013-12-22 11:25:52

标签: ruby-on-rails ruby

我有一个Rails应用程序,它使用CloudFront来加速资产交付,一切都很顺利,在生产中添加了这个.rb

config.action_controller.asset_host = "http://cdn.mydomain.com/"

然而,受限制网络上的一群客户端使用Varnish缓存来点击我的应用程序,无法解析CDN域。 Varnish添加了这个标题:

request.env["HTTP_X_VARNISH"]

我想做的基本上只是在没有设置此标题时使用CDN(客户端不通过清漆)。

所以基本上像

config.action_controller.asset_host = "http://cdn.mydomain.com/" unless request.env["HTTP_X_VARNISH"]

如何实现这一目标?

TIA

1 个答案:

答案 0 :(得分:2)

asset_host可以是Proc

config.action_controller.asset_host = ->(source, request) do
  if request.env["HTTP_X_VARNISH"]
    "#{request.protocol}#{request.host_with_port}"
  else
    "http://cdn.mydomain.com/"
  end
end