Как добавить зависимость актива рельсов в переменную окружения со звездочками?
Я сделал следующее 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
Это приведет к аннулированию всего кэша при изменении конфигурации, а не кэша для этого файла, как вы указали.