Вставьте содержимое файла javascript, обработанного конвейером активов, в HTML - PullRequest
0 голосов
/ 29 февраля 2020

С этим кодом:

<%= javascript_include_tag 'execute_asap' %>

Я могу включить скрипт, который ссылается на execute_asap.js.

Однако, чтобы действительно выполнить этот скрипт, как только по возможности содержимое скрипта должно отображаться в самом документе HTML, чтобы клиенту не приходилось делать дополнительный HTTP-запрос для получения javascript.

. Есть ли способ выполнить sh это все еще при использовании преимуществ конвейера активов и файлов манифеста?

Мой пример использования: я использую javascript, чтобы лениво загружать свои изображения, и я хочу начать загрузку изображений как можно скорее.

1 Ответ

1 голос
/ 01 марта 2020

Я сделал что-то похожее, но с файлом css. Я закончил, делая собственный метод для этого в helper/application_helper.rb. Поэтому я ищу скомпилированный ресурс и возвращаю его в уменьшенном виде и html_safe.

def inline_css
  return Rails.application.assets.find_asset('application').to_s unless Rails.env.production?

  File.read([Rails.root,
             'public',
             'assets',
             Rails.application.assets_manifest.files.select { |k, v| k if v['logical_path'] == 'application.css' }
                                                    .sort_by{|k,v| v['mtime']}.last.first].join('/').to_s)
                                                    .gsub(/\r\n|\r|\n|/, '')
end
<style><%= inline_css.html_safe %></style>

Это не самое симпатичное решение, но оно сработало для меня.

...