У меня есть app/assets/index.html.erb
, содержащий <%= 'Hello world!' %>
, и я добавил require "sprockets/railtie"
к config/application.rb
, но когда я запускаю rake assets:precompile
(RAILS_ENV=development
), public/assets
остается пустым. Что мне не хватает? Я также использую webpacker
и изначально не использовал sprockets
.
Предварительная компиляция Rails index.html.erb
Ответы (1)
Просмотры не являются активами. Ваши шаблоны представлений (erb, slim и т. д.) будут компилироваться и отображаться каждый раз, когда рельсы обрабатывают HTTP-запрос. Подробнее о представлениях Rails читайте здесь.
Ассеты включают только css, js, шрифты, изображения и т.д. Если у вас нет файлов с ассетами в папке с ассетами, то "rake assets:precompile" ничего не сделает. Подробнее о конвейере ресурсов здесь.
UPD. Возможно, это решение поможет вам.
UPD2.
- Я создаю файл
assets/html/index.html.erb
с ‹%= "Hello, world!"%>. - Я добавляю следующую строку к моему
config/application.rb
:
config.assets.precompile = ['*.js', '*.css', '*.html.erb']
- Я добавляю следующую строку в свой manifest.js
//= link_directory ../html .html
- Запускаю
rake assets:precompile
и вижу:
...
I, [2019-03-31T13:56:28.979563 #50803] INFO -- : Writing rails_app/public/assets/index-f4e7c3b6ac0beff671efa8cf84639011c06e58ca53a78d83f36107316cec125f.html
I, [2019-03-31T13:56:28.979832 #50803] INFO -- : Writing rails_app/public/assets/index-f4e7c3b6ac0beff671efa8cf84639011c06e58ca53a78d83f36107316cec125f.html.gz
...
- Открываю скомпилированный файл и вижу "Hello, world"
person
QNester
schedule
31.03.2019
Я не думаю, что это правильно. Звездочки также должны прекомпилировать erb. Мне не нужно динамически отображать все виды — только те, которые меняются.
- person Jasper; 31.03.2019
@Jasper Да, звездочки могут предварительно соответствовать erb, но это erb не для просмотров. Вы можете использовать erb в css: guides.rubyonrails.org/asset_pipeline.html#css -and-erb или в js: guides.rubyonrails. орг/ . Если вы найдете способ компилировать html-представления в статические файлы - дайте мне знать, пожалуйста :)
- person QNester; 31.03.2019
Вы должны иметь возможность настроить предварительную компиляцию, что хотите, я просто не знаю, как это сделать.
- person Jasper; 31.03.2019
к сожалению, это не работает для меня. Я почти уверен, что это происходит из-за того, что я сначала удалил
sprockets
и добавил его вручную, и теперь мне не хватает какой-то важной конфигурации. Где еще вы ссылаетесь на manifest.js
в своем коде?
- person Jasper; 31.03.2019
@Jasper Manifest js требуется для sprocket 4. Подробнее: github.com/rails /sprockets/blob/master/UPGRADING.md#manifestjs
- person QNester; 31.03.2019
public/assets
после assets:precompile? - person QNester   schedule 31.03.2019app/assets/index.html.erb
- person Jasper   schedule 31.03.2019