Ikon bootstrap Rails 5.1.2 tidak disajikan dalam produksi

Ini adalah tempat yang luar biasa. Saya berharap dapat segera menjadi kompeten untuk memberikan kontribusi solusi.

Tolong, ada yang bantu!!!?!

Saya telah menonton youtube selama berjam-jam dan membaca setiap posting tentang pra-kompilasi saluran aset di web.

Untuk alasan apa pun saya memutuskan untuk menggunakan Rails 5.1.2 dan saya tidak tahu apakah itu masalahnya.

glyphicon tidak dirender di Heroku atau menggunakan

rails s -e production 

di ubuntu lokal saya.

saya mengetik

rake assets:precompile RAILS_ENV=production

dan dapatkan

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

tapi di log/production.log saya mengerti

FATAL -- : [849248f2-cd3c-4912-a10d-4f63bd5857ae] ActionController::RoutingError (Tidak ada rute yang cocok dengan [GET] /assets/glyphicons-halflings-regular.ttf):

FATAL -- : [dfae9054-ad8a-4553-85a3-c55d55b1946c] ActionController::RoutingError (Tidak ada rute yang cocok dengan [GET] /assets/glyphicons-halflings-regular.woff):

dll...

Aku tidak mengerti?!? Saya tidak akan berpura-pura memahami semua voodoo yang terjadi di balik kap pipa aset dan sekarang tidak ingin menjadi pemula tetapi ini!?!? Mengapa? Adakah yang bisa memberi tahu saya?

/app/assets/stylesheets/bootstrap.css saya telah diubah untuk ditampilkan

@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');
}

dan, yang cukup menarik, bagian /assets/ ditambahkan meskipun saya sama sekali tidak memasukkannya ke jalur url pada file di atas. Saya sudah mencoba segalanya. Adakah yang bisa membantu? Bantuan apa pun akan sangat dihargai.

Bersulang


person Just Matt for now    schedule 01.01.2018    source sumber


Jawaban (4)


Jika Anda ingin menyimpan aset Anda di folder /assets saja dan bukan di folder /public.

Pertama, Anda dapat menempatkan semua file font glyohicons di folder /assets/fonts. (Jika /fonts tidak dibuat, buatlah satu).

Kedua, ubah file .css Anda menjadi file .scss dengan mengganti namanya sehingga Anda dapat menggunakan metode assets_path di stylesheet

Kemudian, beri tahu aplikasi Anda bahwa Anda juga memiliki font sebagai aset dengan menambahkan baris berikut di file application.rb Anda

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

Kemudian ubah url Anda di file bootstrap.scss dengan cara berikut.

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

Mulai ulang server dan periksa, font harus dimuat sebagai aset.

Terima kasih.

person Arth Thakkar    schedule 01.01.2018
comment
Ya! Bekerja. Namun tidak perlu melakukan bagian config.assets.paths ‹‹ #{Rails.root.to_s}/app/assets/fonts. Saya juga menggunakan font-url(asset-path('glypgicons-halflings-etc, dll.... - person Just Matt for now; 01.01.2018

Anda dapat menulis saluran aset, Anda dapat memindahkan file font Anda ke folder publik seperti membuat folder di dalam public/assets bernama fonts yang terlihat public/assets/fonts/ lalu mengunggah file font Anda di sini yang terlihat seperti public/assets/fonts/glyphicons-halflings-regular.woff dan mengubah jalur seperti /assets/fonts/glyphicons-halflings-regular.woff atau /assets/glyphicons-halflings-regular.wof

Semoga bisa membantu

person fool-dev    schedule 01.01.2018

Anda dapat mengatasi masalah ini dengan mengikuti cara ini -

  1. Buat nama folder "font" di dalam direktori aplikasi/aset dan letakkan font bootstrap (glyphicons-halflings-regular.eot, glyphicons-halflings-regular.ttf, glyphicons-halflings-regular.woff dll) di dalam direktori font.
  2. Sekarang tambahkan baris ini ke config/application.rb

    config.assets.paths << Rails.root.join("app", "assets", "fonts")
    
  3. Sekarang Anda harus mengganti nama app/assets/stylesheets/application.css menjadi app/assets/stylesheets/application.css.scss dan letakkan di bawah kode-

    @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. Sekarang tambahkan font ke config/initializers/assets.rb untuk melakukan Prakompilasi aset tambahan.

    Dir.glob("#{Rails.root}/app/assets/fonts/**/").each do |path|
      Rails.application.config.assets.paths << path
    end
    
  5. Mulai ulang server web.

Saya harap sekarang ini akan berhasil.

person Sahidur Rahman Suman    schedule 01.01.2018

Membangun jawaban fool-dev... Menggunakan Rails 5.1.4, yarn, dan webpacker... Yang diperlukan hanyalah menyalin file font bootstrap dari bootstrap/dist/fonts/ ke public/fonts dan memindahkan.

Tidak perlu mengacaukan file bootstrap/dist/css/bootstrap.* yang disediakan sama sekali.

person Dave Collins    schedule 18.03.2018
comment
Terima kasih @DaveCollins. Saya telah memahami situasi dengan cukup baik sekarang sehingga dapat mengakses CDN secara langsung. Awalnya saya merasa tidak nyaman menggunakan CDN karena mekanismenya terlalu tersembunyi sehingga saya tidak bisa memahami apa yang terjadi. - person Just Matt for now; 20.03.2018