Путь к активу Rails отличается от пути к активу и тега таблицы стилей

#ruby-on-rails #rails-sprockets

Вопрос:

Используя звездочки в среде разработки Rails 6, stylesheet_link_tag('mobile') генерирует:

 <link rel="stylesheet" media="screen" href="/assets/mobile.debug-2c11e2473c793c2475ab3559e38e0b0331956e570b884642ecbe1f21fa2467f1.css" />
 

Но stylesheet_path('mobile') порождает:

 "/assets/mobile-ea85a9ecd4c09607a4f2d7dbfeb5e145cdb4ce2033726041472418be82c104ae.css"
 

На сервере разработки оба этих пути к ресурсам отображают одно и то же содержимое.

Но мне нужно кэшировать правильный путь к активу в работнике службы. Как я могу создать путь к активу, соответствующий пути, созданному помощником stylesheet_link_tag?

(Я мог бы избежать помощника stylesheet_link_tag, но, по-видимому, мне здесь чего-то не хватает)

Ответ №1:

Разница заключается в том, что звездочки разделяют ресурсы на отдельные файлы для включения, когда config.assets.debug это верно, что по умолчанию используется в среде разработки.

К сожалению, возможность отключить этот флаг для отдельного stylesheet_link_tag пользователя, установив флаг отладки в значение false, нарушена — см. Этот запрос на извлечение: https://github.com/rails/sprockets-rails/pull/424

Обходной путь состоит в том, чтобы установить config.assets.debug значение false для среды разработки и использовать stylesheet_link_tag( 'mobile', debug: true ) его, если нам нужно отладить определенный ресурс.