Rails Nginx Passenger不提供字体图标文件

时间:2017-12-06 04:42:49

标签: ruby-on-rails ruby nginx passenger semantic-ui

我正在生产模式下运行Rails 5.1.4应用程序。我使用Semantic UI作为我的css框架,并且已经运行RAILS_ENV=production rails assets:precompile来编译public/assets文件夹中的资产和字体文件。当我加载我的网站时,一切正常,除了图标被广场替换。

这是我的config / application.rb:

class Application < Rails::Application
  config.load_defaults 5.1

  config.assets.paths << Rails.root.join('semantic', 'dist')
  config.assets.precompile << 'themes/default/assets/fonts/*'
end

我的Nginx文件:

server {
    listen       80;
    server_name  atrium.michaelvasallo.com;
    passenger_enabled on;
    rails_env production;
    root /var/www/atrium/public;
}

正如您所见,语义用户界面正在查看themes/default/assets/fonts/,这就是我的图标文件所在的位置。我预编译时它们都显示在public/assets文件夹中,但在加载页面时它们没有被提供。

2 个答案:

答案 0 :(得分:0)

不是解决方法,但我找到了更好的解决方案。在我的factor中,我设置了语义UI CDN的字体路径,而不是从本地文件中提取。

df %>% 
   filter(a != b) %>%
   mutate(abCombination = sprintf('%s %s', pmin(a, b), pmax(a, b))) %>% 
   arrange(abCombination) %>% 
   mutate(abFactor = factor(abCombination, levels = unique(abCombination), 
        labels = paste('Combination', seq_len(n_distinct(abCombination))) ))

答案 1 :(得分:0)

我在制作中遇到了同样的问题,请查看this answer以了解我是如何运作的。

在您的情况下,您可能需要添加:

Rails.application.config.assets.paths << Rails.root.join('semantic', 'dist', 'themes', 'default')
config/initializers/assets.rb

中的

@fontPath设置为:

@fontPath  : "assets/fonts";

并在font-url

中使用icon.variables帮助器
/*******************************
             Icon
*******************************/

/*--------------
   Font Files
---------------*/
@fontName: 'icons';
@src:
  font-url("@{fontPath}/@{fontName}.eot?#iefix") format('embedded-opentype'),
  font-url("@{fontPath}/@{fontName}.woff2") format('woff2'),
  font-url("@{fontPath}/@{fontName}.woff") format('woff'),
  font-url("@{fontPath}/@{fontName}.ttf") format('truetype'),
  font-url("@{fontPath}/@{fontName}.svg#icons") format('svg')
;
@fallbackSRC: font-url("@{fontPath}/@{fontName}.eot");

/*--------------
 Optional Files
---------------*/

/* Outline Icons */
@importOutlineIcons: true;
@outlineFontName: 'outline-icons';
@outlineSrc:
  font-url("@{fontPath}/@{outlineFontName}.eot?#iefix") format('embedded-opentype'),
  font-url("@{fontPath}/@{outlineFontName}.woff2") format('woff2'),
  font-url("@{fontPath}/@{outlineFontName}.woff") format('woff'),
  font-url("@{fontPath}/@{outlineFontName}.ttf") format('truetype'),
  font-url("@{fontPath}/@{outlineFontName}.svg#icons") format('svg')
;
@outlineFallbackSRC: font-url("@{fontPath}/@{outlineFontName}.eot");

/* Brand Icons */
@importBrandIcons: true;
@brandFontName: 'brand-icons';
@brandSrc:
  font-url("@{fontPath}/@{brandFontName}.eot?#iefix") format('embedded-opentype'),
  font-url("@{fontPath}/@{brandFontName}.woff2") format('woff2'),
  font-url("@{fontPath}/@{brandFontName}.woff") format('woff'),
  font-url("@{fontPath}/@{brandFontName}.ttf") format('truetype'),
  font-url("@{fontPath}/@{brandFontName}.svg#icons") format('svg')
;
@brandFallbackSRC: font-url("@{fontPath}/@{brandFontName}.eot");