Иконки начальной загрузки Rails 5.1.2 не обслуживаются в производстве

Это потрясающее место. Я надеюсь, что скоро стану достаточно компетентным, чтобы предлагать решения.

Пожалуйста, помогите кто-нибудь!!!!!!

Я часами смотрел YouTube и читал все посты о предварительной компиляции конвейера ресурсов в Интернете.

По какой-то причине я решил использовать Rails 5.1.2, и я не знаю, в этом ли проблема.

глификоны не отображаются на 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 (маршрут не соответствует [GET] /assets/glyphicons-halflings-regular.ttf):

FATAL -- : [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-адреса в вышеуказанном файле. Я пробовал все. Кто-нибудь может помочь? Любая помощь приветствуется.

Ваше здоровье


person Just Matt for now    schedule 01.01.2018    source источник


Ответы (4)


Если вы хотите хранить свои ресурсы только в папке /assets, а не в папке /public.

Во-первых, вы можете поместить все файлы шрифтов glyohicons в папку /assets/fonts. (Если /fonts не создан, создайте его).

Во-вторых, преобразуйте файл .css в файл .scss, переименовав его, чтобы вы могли использовать метод assets_path в таблице стилей.

Затем сообщите своему приложению, что у вас есть шрифты в качестве актива, добавив следующую строку в файл application.rb.

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

Затем измените свои URL-адреса в файле bootstrap.scss следующим образом.

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

Перезапустите сервер и проверьте, шрифты должны загружаться как активы.

Спасибо.

person Arth Thakkar    schedule 01.01.2018
comment
Да! Работает. Но не нужно было выполнять часть config.assets.paths ‹‹ #{Rails.root.to_s}/app/assets/fonts. Я также использовал font-url(asset-path('glypgicons-halflings-etc, etc.... - person Just Matt for now; 01.01.2018

Вы можете написать конвейер активов, вы можете переместить файл шрифта в общую папку, например создать папку внутри public/assets с именем fonts, которая выглядит public/assets/fonts/, затем загрузить файлы шрифтов сюда, это выглядит как public/assets/fonts/glyphicons-halflings-regular.woff и изменить пути, например /assets/fonts/glyphicons-halflings-regular.woff или /assets/glyphicons-halflings-regular.wof

Надеюсь помочь

person fool-dev    schedule 01.01.2018

Вы можете решить эту проблему следующим образом -

  1. Создайте папку с именем «шрифты» внутри каталога app/assets и поместите загрузочные шрифты (glyphicons-halflings-regular.eot, glyphicons-halflings-regular.ttf, glyphicons-halflings-regular.woff и т. д.) внутри каталога шрифтов.
  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. Перезапустите веб-сервер.

Я надеюсь, что теперь это должно работать.

person Sahidur Rahman Suman    schedule 01.01.2018

Основываясь на ответе fool-dev... Используя Rails 5.1.4, yarn и webpacker... Все, что нужно было, это скопировать файлы шрифтов начальной загрузки из bootstrap/dist/fonts/ в public/fonts и повторно развернуть.

Мне вообще не пришлось возиться с предоставленными bootstrap/dist/css/bootstrap.* файлами.

person Dave Collins    schedule 18.03.2018
comment
Спасибо @DaveCollins. С тех пор я достаточно хорошо разобрался в ситуации, чтобы просто получить прямой доступ к CDN. Сначала мне было неудобно использовать CDN, поскольку механика была слишком скрыта, чтобы я мог понять, что происходит. - person Just Matt for now; 20.03.2018