0

Я сделал следующее js.erb:Как добавить зависимость ресурса рельсов к переменной среды со звездочками?

#= require cable 

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

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

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

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 

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