Ruby on rails 正在将资源\u主机和相对协议URL更改为http

Ruby on rails 正在将资源\u主机和相对协议URL更改为http,ruby-on-rails,ruby-on-rails-4,asset-pipeline,Ruby On Rails,Ruby On Rails 4,Asset Pipeline,我的应用程序(Rails 4.0.0)的某些元素可以通过http://和https://连接使用,因此我已将我的asset_主机配置为使用相对协议url(//),这应该允许浏览器切换到它希望从中获取资产的协议 config.action_controller.asset_host = "//assets%d.mydomain.com" 这在我几乎所有的应用程序中都能很好地工作,但是我有一个特殊的情况,Rails似乎使用http://而不是相对的协议url/输出主机 这似乎只发生在我的生产环境中

我的应用程序(Rails 4.0.0)的某些元素可以通过http://和https://连接使用,因此我已将我的asset_主机配置为使用相对协议url(//),这应该允许浏览器切换到它希望从中获取资产的协议

config.action_controller.asset_host = "//assets%d.mydomain.com"
这在我几乎所有的应用程序中都能很好地工作,但是我有一个特殊的情况,Rails似乎使用http://而不是相对的协议url/输出主机

这似乎只发生在我的生产环境中,并且只发生在从我的LESS/CSS文件中引用资产时,而不是在使用样式表链接标签包含文件本身时

我在视图中引用我的SASS文件,如下所示:

<%= stylesheet_link_tag "public/application", :media => "all" %>
使用my nice relative protocol URL,包含已编译CSS的链接标记看起来与预期一致:

 <link href="//assets0.mydomain.com/assets/public/application-2c651fbc049aa23457c551d71e475420.css" media="all" rel="stylesheet" />
这导致浏览器中出现不安全的内容警告,IE根本不加载字体,Chrome和FF等浏览器向用户显示警告


我想不出任何解释来解释为什么会发生这种情况。任何建议都会被接受。

O.k经过长时间的挖掘,似乎在某个时候,我的资产的编译在部署过程中失败了,留下了一个旧版本的资产,它是用http值硬编码的

因此,这是提供了,而不是一个包含我的相对协议URL


在强制资产重新编译并确保它们成功编译后,事情如我所料出现。

听起来很疯狂,但我遇到了完全相同的问题和解决方案。谢谢你为我节省了很多时间!同样的原因。我有一个Capistrano任务,如果没有更改资产文件,它将跳过资产编译。由于启用相对URL未被检测为相关更改,因此我的资产从未更新。
 <link href="//assets0.mydomain.com/assets/public/application-2c651fbc049aa23457c551d71e475420.css" media="all" rel="stylesheet" />
@font-face {
    font-family:'OpenSansLight';
    src:url(http://assets0.mydomain.com/assets/opensans/OpenSans-Light-webfont-7f46c9d03142a572bb5969aa55dc54de.eot)