我正在尝试在我的Rails 4应用程序上使用字体Awesome。这些字体在开发方面非常有效,但在生产方面却无法正常工作。
在使用capistrano进行部署时,资源会在服务器上进行预编译。
所有CSS文件,JS(在app / assets / *和vendor / assets / *)正在运行......只有字体不是。
如果我在我的开发机器上运行应用程序作为生产,它可以工作:
RAILS_ENV=production bin/rails s -b 0.0.0.0
只有当我发送到我的生产主机(带有Passenger + Ngnix的VPS)时,字体才能正常工作
我所拥有的是:
# config/initializers/assets.rb
# Add additional assets to the asset load path
# Rails.application.config.assets.paths << Emoji.images_path
Rails.application.config.assets.precompile << /\.(?:svg|eot|woff|woff2|ttf)\z/
和...
# config/environments/production.rb
# ...
config.assets.compile = true
广告最后:
# app/assets/stylesheets.css.erb
@font-face {
font-family: 'FontAwesome';
src: url("<%= font_path('Font-Awesome/fontawesome-webfont.eot') %>?v=4.3.0");
src: url("<%= font_path('Font-Awesome/fontawesome-webfont.eot') %>?#iefix&v=4.3.0") format('embedded-opentype'),
url("<%= font_path('Font-Awesome/fontawesome-webfont.woff2') %>?v=4.3.0") format('woff2'),
url("<%= font_path('Font-Awesome/fontawesome-webfont.woff') %>?v=4.3.0") format('woff'),
url("<%= font_path('Font-Awesome/fontawesome-webfont.ttf') %>?v=4.3.0") format('truetype'),
url("<%= font_path('Font-Awesome/fontawesome-webfont.svg') %>?v=4.3.0#fontawesomeregular") format('svg');
font-weight: normal;
font-style: normal;
}
字体位于:vendor/assets/fonts/Font-Awesome/fontawesome-*
我不明白的是,在开发它可以工作,我在Heroku上有另一个应用程序,具有相同的配置,字体效果很好。
如果我使用SSH访问我的服务器并运行ls my_app/public/assets
,我可以预先编译所有资产(css,javascripts和fons)。
我缺少什么?
答案 0 :(得分:1)
我尝试了很多解决方案,但没有任何效果......
唯一有效的是移动文件夹&#34; fonts&#34;从vendor/assets
到app/assets
。
据我所知,这对我来说没有意义,第三方资产必须转到vendor/assets
文件夹。
但是第三个CSS和Javascript文件位于vendor/assets/*
并且工作正常。只有不起作用的字体文件。