Предварительная компиляция Rails index.html.erb

У меня есть app/assets/index.html.erb, содержащий <%= 'Hello world!' %>, и я добавил require "sprockets/railtie" к config/application.rb, но когда я запускаю rake assets:precompile (RAILS_ENV=development), public/assets остается пустым. Что мне не хватает? Я также использую webpacker и изначально не использовал sprockets.


person Jasper    schedule 31.03.2019    source источник
comment
Что вы ожидаете от public/assets после assets:precompile?   -  person QNester    schedule 31.03.2019
comment
Я бы ожидал, что index.html вкл. Привет мир!. У меня была опечатка: шаблон находится в app/assets/index.html.erb   -  person Jasper    schedule 31.03.2019


Ответы (1)


Просмотры не являются активами. Ваши шаблоны представлений (erb, slim и т. д.) будут компилироваться и отображаться каждый раз, когда рельсы обрабатывают HTTP-запрос. Подробнее о представлениях Rails читайте здесь.

Ассеты включают только css, js, шрифты, изображения и т.д. Если у вас нет файлов с ассетами в папке с ассетами, то "rake assets:precompile" ничего не сделает. Подробнее о конвейере ресурсов здесь.

UPD. Возможно, это решение поможет вам.

UPD2.

  1. Я создаю файл assets/html/index.html.erb с ‹%= "Hello, world!"%>.
  2. Я добавляю следующую строку к моему config/application.rb:
config.assets.precompile = ['*.js', '*.css', '*.html.erb']
  1. Я добавляю следующую строку в свой manifest.js
//= link_directory ../html .html
  1. Запускаю 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
...
  1. Открываю скомпилированный файл и вижу "Hello, world"
person QNester    schedule 31.03.2019
comment
Я не думаю, что это правильно. Звездочки также должны прекомпилировать erb. Мне не нужно динамически отображать все виды — только те, которые меняются. - person Jasper; 31.03.2019
comment
@Jasper Да, звездочки могут предварительно соответствовать erb, но это erb не для просмотров. Вы можете использовать erb в css: guides.rubyonrails.org/asset_pipeline.html#css -and-erb или в js: guides.rubyonrails. орг/ . Если вы найдете способ компилировать html-представления в статические файлы - дайте мне знать, пожалуйста :) - person QNester; 31.03.2019
comment
Вы должны иметь возможность настроить предварительную компиляцию, что хотите, я просто не знаю, как это сделать. - person Jasper; 31.03.2019
comment
к сожалению, это не работает для меня. Я почти уверен, что это происходит из-за того, что я сначала удалил sprockets и добавил его вручную, и теперь мне не хватает какой-то важной конфигурации. Где еще вы ссылаетесь на manifest.js в своем коде? - person Jasper; 31.03.2019
comment
@Jasper Manifest js требуется для sprocket 4. Подробнее: github.com/rails /sprockets/blob/master/UPGRADING.md#manifestjs - person QNester; 31.03.2019