升级到Rails 5后,Bootstrap glyphicon图标无法在heroku上正确加载。例如,Trashcan图标显示为问号。看来浏览器没有找到glyphicon资产并加载自己的解释。我正在使用bootstrap-sass 3.3.7
。
当加载glyphicons时,如果我打开控制台,我会看到如下错误:
A server with the specified hostname could not be found
https://assets/bootstrap/glyphicons-halflings-regular-fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c.woff2
在我看来,资产主机没有为引导资产正确设置。
在我的production.rb
文件中,我有一行
config.asset_host = "https://#{ENV['RAILS_HOST_PATH']}"
如果我heroku config --remote production
,则RAILS_HOST_PATH
的值为www.example.com
。
如果我查看Rails.application.config.asset_host
,它会正确显示
"https://www.example.com"
。但是,对于引导资产,域名将被解析为https://
。
这里发生了什么?
答案 0 :(得分:1)
进一步的调查显示Rails 5本身不是问题,但是由于在升级时更改了production.rb
文件,并且在Heroku's advice之后使用ENV变量来处理这些文件。
因此,我需要在预编译中指定目标RAILS_HOST_PATH,即
RAILS_ENV=production RAILS_HOST_PATH=www.example.com rake assets:precompile