Rails 5.1.2 bootstrap 图标未在生产中提供
Rails 5.1.2 bootstrap icons not being served in production
这是一个很棒的地方。我希望尽快有足够的能力来贡献解决方案。
拜托,有人帮忙!!?!
我看了几个小时的 youtube 并在网络上阅读了所有 post 关于资产管道预编译的内容。
出于某种原因,我决定使用 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 中我得到
FATAL -- : [849248f2-cd3c-4912-a10d-4f63bd5857ae] ActionController::RoutingError (No route matches [GET] "/assets/glyphicons-halflings-regular.ttf"):
FATAL -- : [dfae9054-ad8a-4553-85a3-c55d55b1946c] ActionController::RoutingError (No route matches [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 路径之外,它也会被添加。我已经尝试了一切。谁能帮忙?任何帮助将不胜感激。
干杯
您可以编写资产管道,您可以将字体文件移动到 public 文件夹,例如在 public/assets
中创建名为 fonts
的文件夹,查找 public/assets/fonts/
然后上传您的字体此处的文件看起来像 public/assets/fonts/glyphicons-halflings-regular.woff
并更改路径如 /assets/fonts/glyphicons-halflings-regular.woff
或 /assets/glyphicons-halflings-regular.wof
希望有所帮助
如果您只想将资产保存在 /assets 文件夹中,而不是在 /public 文件夹中。
首先,您可以将所有glyohicons 的字体文件放在/assets/fonts 文件夹中。 (如果 /fonts 未创建,则创建一个)。
其次,通过重命名将您的 .css 文件转换为 .scss 文件,以便您可以在样式表
中使用 assets_path 方法
然后,通过在 application.rb 文件中添加以下行,让您的应用程序知道您也将字体作为资产
config.assets.paths << "#{Rails.root.to_s}/app/assets/fonts"
然后,按以下方式更改 bootstrap.scss 文件中的网址。
src: url(asset_path('glyphicons-halflings-regular.eot'));
重新启动服务器并检查,字体应该作为资产加载。
谢谢。
你可以按照这个方法解决这个问题-
- 在 app/assets 目录中创建一个名为 "fonts" 的文件夹并放置 bootstrap 字体 (glyphicons-halflings-regular.eot, glyphicons-halflings-regular.ttf, glyphicons-halflings-regular.woff etc) 字体目录中的字体。
现在将此行添加到 config/application.rb
config.assets.paths << Rails.root.join("app", "assets", "fonts")
现在你必须将 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");
}
现在将字体添加到 config/initializers/assets.rb 以预编译附加资产。
Dir.glob("#{Rails.root}/app/assets/fonts/**/").each do |path|
Rails.application.config.assets.paths << path
end
重新启动网络服务器。
我希望它现在应该可以工作了。
基于 fool-dev
的回答...使用 Rails 5.1.4、yarn 和 webpacker...所需要的只是将 bootstrap 字体文件从 bootstrap/dist/fonts/
复制到 public/fonts
和 re-deploy.
根本不需要弄乱提供的 bootstrap/dist/css/bootstrap.*
文件。
这是一个很棒的地方。我希望尽快有足够的能力来贡献解决方案。
拜托,有人帮忙!!?!
我看了几个小时的 youtube 并在网络上阅读了所有 post 关于资产管道预编译的内容。
出于某种原因,我决定使用 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 中我得到
FATAL -- : [849248f2-cd3c-4912-a10d-4f63bd5857ae] ActionController::RoutingError (No route matches [GET] "/assets/glyphicons-halflings-regular.ttf"):
FATAL -- : [dfae9054-ad8a-4553-85a3-c55d55b1946c] ActionController::RoutingError (No route matches [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 路径之外,它也会被添加。我已经尝试了一切。谁能帮忙?任何帮助将不胜感激。
干杯
您可以编写资产管道,您可以将字体文件移动到 public 文件夹,例如在 public/assets
中创建名为 fonts
的文件夹,查找 public/assets/fonts/
然后上传您的字体此处的文件看起来像 public/assets/fonts/glyphicons-halflings-regular.woff
并更改路径如 /assets/fonts/glyphicons-halflings-regular.woff
或 /assets/glyphicons-halflings-regular.wof
希望有所帮助
如果您只想将资产保存在 /assets 文件夹中,而不是在 /public 文件夹中。
首先,您可以将所有glyohicons 的字体文件放在/assets/fonts 文件夹中。 (如果 /fonts 未创建,则创建一个)。
其次,通过重命名将您的 .css 文件转换为 .scss 文件,以便您可以在样式表
中使用 assets_path 方法然后,通过在 application.rb 文件中添加以下行,让您的应用程序知道您也将字体作为资产
config.assets.paths << "#{Rails.root.to_s}/app/assets/fonts"
然后,按以下方式更改 bootstrap.scss 文件中的网址。
src: url(asset_path('glyphicons-halflings-regular.eot'));
重新启动服务器并检查,字体应该作为资产加载。
谢谢。
你可以按照这个方法解决这个问题-
- 在 app/assets 目录中创建一个名为 "fonts" 的文件夹并放置 bootstrap 字体 (glyphicons-halflings-regular.eot, glyphicons-halflings-regular.ttf, glyphicons-halflings-regular.woff etc) 字体目录中的字体。
现在将此行添加到 config/application.rb
config.assets.paths << Rails.root.join("app", "assets", "fonts")
现在你必须将 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"); }
现在将字体添加到 config/initializers/assets.rb 以预编译附加资产。
Dir.glob("#{Rails.root}/app/assets/fonts/**/").each do |path| Rails.application.config.assets.paths << path end
重新启动网络服务器。
我希望它现在应该可以工作了。
基于 fool-dev
的回答...使用 Rails 5.1.4、yarn 和 webpacker...所需要的只是将 bootstrap 字体文件从 bootstrap/dist/fonts/
复制到 public/fonts
和 re-deploy.
根本不需要弄乱提供的 bootstrap/dist/css/bootstrap.*
文件。