尝试找出在某个控制器访问时更改资产主机的方法。
https协议将严格访问控制器,因此我需要将资产主机切换为使用https。目前,资产主机设置为链接到S3的CNAME子域,并且没有与之关联的SSL证书。我想要实现的是用https Amazon S3 URL替换当前的资产主机。我担心的唯一资产是CSS和JS包含的。
我正在考虑使用帮助程序从stylesheet_link_tag和javascript_include_tag中删除主机,并将其替换为https Amazon S3网址。虽然看起来对我来说有些迟钝。
或者,如果request.ssl可能有更改资产主机的方法?是真的吗?
我正在使用Rails 3.2.x。
答案 0 :(得分:17)
为我的案例找出解决方案。
在我的Production环境文件中使用proc on config.action_controller.action_host来处理request.ssl上的逻辑?并据此作出回应。这是代码
config.action_controller.asset_host = Proc.new { |source, request = nil, *_|
request && request.ssl? ? 'https://s3.amazonaws.com/my_bucket' : 'http://s3.my-domain.com'
}
'request'设置为nil,以适应资产文件中调用asset_host的情况(如果使用资产助手标记,则为CSS和JS)。由于请求不存在,并且如果未在args中分配请求,则在编译资产时将抛出错误(如下所示)。
This asset host cannot be computed without a request in scope. Remove the second argument to your asset_host Proc if you do not need the request, or make it optional.
中的选项参数存在错误,因此存在* _