Rails:Bootstrap 生产中未加载字形

Rails: Bootstrap glyphicons not loading in production

升级到 Rails 5 后,Bootstrap 字形图标无法在 heroku 上正确加载。例如,垃圾桶图标显示为问号。浏览器似乎没有找到字形资产并加载它自己的解释。我正在使用 bootstrap-sass 3.3.7

加载字形后,如果我打开控制台,我会看到如下错误:

A server with the specified hostname could not be found
https://assets/bootstrap/glyphicons-halflings-regular-fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c.woff2

在我看来,没有为 bootstrap 资产正确设置资产主机。 在我的 production.rb 文件中,我有一行

config.asset_host = "https://#{ENV['RAILS_HOST_PATH']}"

如果我这样做 heroku config --remote productionRAILS_HOST_PATH 的值是 www.example.com

如果我查看 Rails.application.config.asset_host 它会正确显示 "https://www.example.com"。但是对于 bootstrap 资产来说,域名解析为 https://.

这是怎么回事?

进一步调查表明,这不是 Rails 5 本身的问题,而是由于在升级中更改了 production.rb 文件,并遵循 Heroku's advice 对 ENV 变量的使用这样的文件。

因此,我需要在预编译中指定目标 RAILS_HOST_PATH 即 RAILS_ENV=production RAILS_HOST_PATH=www.example.com rake assets:precompile