Rails 5.1.2引导程序图标未在生产中提供

时间:2018-01-01 06:13:31

标签: ruby-on-rails asset-pipeline glyphicons bootstrap-sass

这是一个很棒的地方。我希望很快就能够提供足够的解决方案。

拜托,有人帮忙!!?!

我已经看过youtube的小时,并在网上阅读有关资产管道预编译的每篇文章。

无论出于何种原因,我决定使用Rails 5.1.2而且我不知道这是不是问题。

glyphicons不能在Heroku上渲染或使用

rails s -e production 

在我当地的ubuntu上。

我输入

rake assets:precompile RAILS_ENV=production

并获取

I, [2018-01-01T16:05:07.261287 #4745]  INFO -- : Writing /home/dracos/rails/video-store/public/assets/glyphicons-halflings-regular-e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af57456.ttf
I, [2018-01-01T16:05:07.261968 #4745]  INFO -- : Writing /home/dracos/rails/video-store/public/assets/glyphicons-halflings-regular-e395044093757d82afcb138957d06a1ea9361bdcf0b442d06a18a8051af57456.ttf.gz
I, [2018-01-01T16:05:07.263049 #4745]  INFO -- : Writing /home/dracos/rails/video-store/public/assets/glyphicons-halflings-regular-fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c.woff
I, [2018-01-01T16:05:07.264510 #4745]  INFO -- : Writing /home/dracos/rails/video-store/public/assets/glyphicons-halflings-regular-fe185d11a49676890d47bb783312a0cda5a44c4039214094e7957b4c040ef11c.woff2
I, [2018-01-01T16:05:07.289833 #4745]  INFO -- : Writing /home/dracos/rails/video-store/public/assets/application-c29c47294834d3d47956f910a3182df4a7db7d5864e82c6f758027f30669bafb.js
I, [2018-01-01T16:05:07.290028 #4745]  INFO -- : Writing /home/dracos/rails/video-store/public/assets/application-c29c47294834d3d47956f910a3182df4a7db7d5864e82c6f758027f30669bafb.js.gz
I, [2018-01-01T16:05:14.175848 #4745]  INFO -- : Writing /home/dracos/rails/video-store/public/assets/application-b896db4d9b9e69049347e71a1825dcdc1a4eed9147196fdd761afe6f12b556d4.css
I, [2018-01-01T16:05:14.176068 #4745]  INFO -- : Writing /home/dracos/rails/video-store/public/assets/application-b896db4d9b9e69049347e71a1825dcdc1a4eed9147196fdd761afe6f12b556d4.css.gz

但是在log / production.log中我得到了

  

致命 - :[849248f2-cd3c-4912-a10d-4f63bd5857ae] ActionController :: RoutingError(没有路由匹配[GET]" /assets/glyphicons-halflings-regular.ttf"):

     

致命 - :[dfae9054-ad8a-4553-85a3-c55d55b1946c] ActionController :: RoutingError(没有路由匹配[GET]" /assets/glyphicons-halflings-regular.woff"):

等...

我没有得到?!?我不会假装理解资产管道的引擎盖下的所有伏都教,并且现在想要不是新手而是这个!?!?为什么?谁能让我知道?

我的/app/assets/stylesheets/bootstrap.css已修改为显示

@font-face {
    font-family: 'Glyphicons Halflings';

    src: url('../assets/glyphicons-halflings-regular.eot');
    src: url('../assets/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), 
    url('../assets/glyphicons-halflings-regular.woff2') format('woff2'),   
    url('../assets/glyphicons-halflings-regular.woff') format('woff'), 
    url('../assets/glyphicons-halflings-regular.ttf') format('truetype'), 
    url('../assets/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
}

并且,有趣的是,/assets/部分被添加,即使我将其完全从上述文件中的url路径中删除。我尝试了一切。有人可以帮忙吗?任何帮助将不胜感激。

干杯

4 个答案:

答案 0 :(得分:1)

如果您希望仅将资产保留在/ assets文件夹中而不保留在/ public文件夹中。

首先,您可以将所有glyohicons的字体文件放在/ assets / fonts文件夹中。 (如果未创建/ fonts,则创建一个)。

其次,通过重命名将.css文件转换为.scss文件,以便在样式表中使用assets_path方法

然后,通过在application.rb文件中添加以下行,让您的应用程序知道您也将字体作为资产

config.assets.paths << "#{Rails.root.to_s}/app/assets/fonts"

然后,以下列方式更改bootstrap.scss文件中的URL。

src: url(asset_path('glyphicons-halflings-regular.eot'));

重新启动服务器并检查,字体应作为资产加载。

感谢。

答案 1 :(得分:0)

您可以编写资产管道,您可以将您的字体文件移动到公共文件夹,例如名为public/assets的{​​{1}}内的创建文件夹,其中fonts然后上传您的字体文件,这看起来像{ {1}}并更改public/assets/fonts/public/assets/fonts/glyphicons-halflings-regular.woff

等路径

希望能提供帮助

答案 2 :(得分:0)

您可以按照这种方式解决此问题 -

  1. 在app / assets目录中创建一个文件夹名称“fonts”,并在其中放置引导字体(glyphicons-halflings-regular.eot,glyphicons-halflings-regular.ttf,glyphicons-halflings-regular.woff等)字体fonts目录。
  2. 现在将此行添加到config / application.rb

    config.assets.paths << Rails.root.join("app", "assets", "fonts")
    
  3. 现在你必须将app / assets / stylesheets / application.css重命名为app / assets / stylesheets / application.css.scss并放置到以下代码 -

    @font-face {
     font-family: 'Glyphicons Halflings';
     src: url(asset-path("glyphicons-halflings-regular.eot"));
     src: url(asset-path("glyphicons-halflings-regular.eot?#iefix")) format("embedded-opentype"),
         url(asset-path("glyphicons-halflings-regular.woff2")) format("woff2"),
         url(asset-path("glyphicons-halflings-regular.woff")) format("woff"),
         url(asset-path("glyphicons-halflings-regular.ttf")) format("truetype"),      
        url(asset-path("glyphicons-halflings-regular.svg#glyphicons_halflingsregular")) format("svg");
    }
    
  4. 现在将字体添加到config / initializers / assets.rb以预编译其他资产。

    Dir.glob("#{Rails.root}/app/assets/fonts/**/").each do |path|
      Rails.application.config.assets.paths << path
    end
    
  5. 重新启动网络服务器。

  6. 我希望它现在可以运作。

答案 3 :(得分:0)

fool-dev的答案为基础......使用Rails 5.1.4,纱线 webpacker ......只需要一切是将引导程序字体文件从bootstrap/dist/fonts/复制到public/fonts并重新部署。

根本不必弄乱提供的bootstrap/dist/css/bootstrap.*文件。