我的生产环境下的asset_host配置如下:
config.action_controller.asset_host = Proc.new { |source, request|
if request.ssl?
"#{request.protocol}#{request.host_with_port}"
else
"#{request.protocol}assets#{(source.length % 4) + 1}.example.com"
end
}
...这段代码基本上是从文档中获取的:
http://api.rubyonrails.org/classes/ActionView/Helpers/AssetTagHelper.html
当我执行assets:precompile时,会出现以下情况:
$ RAILS_ENV=production bundle exec rake assets:precompile
rake aborted!
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.
......但是我实际上不能删除第二个参数,因为我需要知道请求是否是ssl。 也就是说,我了解到在生成资产的rake任务期间不存在请求......
那么我该如何摆脱这个进退两难的局面呢?
if request && request.ssl?
应该改成unless request && request.ssl?
. - Eric Koslow