如何将轨道资产依赖项添加到带有链轮的环境变量中?

问题描述:

我做了如下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标记中,并在不使用ERB的情况下进入javascript,但它感觉不太好。

我怎样才能使这项工作与链轮?

当前的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 

这会在配置发生变化时使所有缓存无效,而不是指向该文件的缓存。