字形在 Ubuntu Rails 4.1 安装中未正确显示
Posted
技术标签:
【中文标题】字形在 Ubuntu Rails 4.1 安装中未正确显示【英文标题】:Gliphs not showing up properly on an Ubuntu Rails 4.1 installation 【发布时间】:2014-07-02 23:19:47 【问题描述】:在我的开发机器上:
Windows 8.1
Ruby 2.0
Rails 4.1
Bootstrap 3
在我的生产机器上:
Ubuntu 12.4
Ruby 2.1.1
Rails 4.1
Bootstrap 3
这是我的代码:
<td>
<%= link_to my_model, class: 'btn btn-info' do %>
<span class="glyphicon glyphicon-search"></span>
<% end %>
</td>
<td>
<%= link_to [:edit, my_model], class: 'btn btn-warning' do %>
<span class="glyphicon glyphicon-pencil"></span>
<% end %>
</td>
<td>
<%= link_to my_model, method: :delete, data: confirm: 'Are you sure?' , class: 'btn btn-danger' do %>
<span class="glyphicon glyphicon-remove"></span>
<% end %>
</td>
这些图形在我的开发机器上显示良好,但在生产机器上却没有。附上图片。有什么想法吗?
预编译:
我忘了补充一下,我预编译如下:
RAILS_ENV=production bundle exec rake assets:precompile
检查元素:
当我检查这些元素时,萤火虫是这样说的。它们是一样的:
用于生产的 Firebug 检查:
<td>
<a class="btn btn-info" href="/agents/1">
<span class="glyphicon glyphicon-search"></span>
</a>
</td>
用于开发的 Firebug 检查:
<td>
<a class="btn btn-info" href="/agents/1">
<span class="glyphicon glyphicon-search"></span>
</a>
</td>
答案:
看起来我正在处理一个已知的 Rails 4.1 问题。解决办法是:
在environments/production.rb中有以下设置:
config.assets.compile = true
预编译资产如下:
RAILS_ENV=production bundle exec rake assets:precompile
预编译资产将防止动态资产重新编译。我对其进行了测试,它现在可以在我的 ubuntu 4.1 服务器上运行
【问题讨论】:
开发者控制台中的任何错误? 开发者控制台?问题出在生产服务器上,而不是开发环境上。 是的开发者控制台!您在浏览器上检查元素的那个,它与您的终端不同:) 您是在谈论 Rails 控制台,如 rails c RAILS_ENV=production,还是使用我的本地浏览器检查元素? 您的浏览器控制台,您可以在其中检查 js 错误、萤火虫或只是您使用过的本地浏览器控制台 【参考方案1】:可能有很多问题导致:
--
预编译
这里的主要问题可能是precompilation:
默认情况下,Rails 假定资产已经预编译,并将 由您的网络服务器用作静态资产。
预编译 Rails 资产是许多 Heroku 绑定应用程序的祸根(我知道您没有使用 Herou),因为许多人在设计资产管道时没有考虑预编译要求。
您可能遇到的问题是您的资产要么没有预编译,要么引用了它们的“动态”文件名,而不是它们的“静态”文件名
我会在部署到生产之前亲自预编译您的资产:
$ rake assets:precompile RAILS_ENV=production
-
指纹识别
当你预编译你的资产时,Rails 会执行一个名为 fingerprinting
的操作 - 基本上 Rails 会在文件名的末尾附加一个哈希
对许多人来说,另一个问题是他们会使用类似以下的方式引用“静态”文件名:
#app/assets/stylesheets/application.css
.style
background: url("your_image.png");
这里的问题是,虽然这将在开发中工作(静态引用资产),但在生产中会遇到问题。要解决此问题,您需要使用一些 Rails CSS pre-processors (SASS):
#app/assets/stylesheets/application.css
.style
background: asset_url("your_image.png");
--
修复
直接提到您的问题,我想说的主要问题是您可能没有正确引用您的 CSS 文件,可能路径不正确。
我会首先在您的浏览器中查看developer console
- 这可能会告诉您您没有可用的各种 CSS 文件,然后您可以尝试预编译和动态引用字形以看看有没有效果
【讨论】:
我预编译了资产(请参阅我的编辑),所以这不是问题。我会调查指纹并报告 在我的问题的编辑中查看完整答案。需要预编译并阅读您指向我的链接帮助我找到答案(尽管特定于 Rails 4.1 以解决已知问题)以上是关于字形在 Ubuntu Rails 4.1 安装中未正确显示的主要内容,如果未能解决你的问题,请参考以下文章