Как добавить зависимость актива рельсов в переменную окружения со звездочками?

Я сделал следующее js.erb:

#= require cable

this.App = {};
App.cable = Cable.createConsumer('<%= Rails.application.config.web_socket_server_url %>');

Я хотел бы, чтобы звездочки регенерировали актив, когда web_socket_server_url обновляется.

Я пытался использовать зависимость_, но он работает только для файлов. Я также попытался добавить блок конфигурации в инициализаторе (который, как я ожидал, перезагрузил все ресурсы при изменении, а не только соответствующий):

Sprockets.register_dependency_resolver 'web-socket-server-url' do
  ::Rails.application.config.web_socket_server_url
end

config.assets.configure do |env|
  env.depend_on 'web-socket-server-url'
end

Я получил идею, увидев этот коммит звездочек https://github.com/rails/sprockets-rails/commit/9a61447e1c34ed6d35c358935bcae4522b60b48d

Но это не сработало, как я ожидал.

В идеале я хотел бы иметь возможность зарегистрировать средство разрешения зависимостей в моем инициализаторе, а затем добавить //= depend_on 'web-socket-server-url' в моем активе, поэтому только актив будет перезагружен.

В качестве обходного пути я мог бы добавить конфигурацию в разметку HTML и войти в javascript без использования ERB, но это не так хорошо.

Как я мог сделать это с помощью звездочек?

1 ответ

Решение

Текущий API для этого - тот, который вы уже использовали.

Sprockets.register_dependency_resolver 'web-socket-server-url' do
  ::Rails.application.config.web_socket_server_url.to_s
end

config.assets.configure do |env|
  env.depend_on 'web-socket-server-url'
end

Это приведет к аннулированию всего кэша при изменении конфигурации, а не кэша для этого файла, как вы указали.

Другие вопросы по тегам