【问题标题】:How to add a rails asset dependency to an environment variable with sprockets?如何使用 sprockets 将 rails 资产依赖项添加到环境变量中?
【发布时间】:2016-06-18 01:20:39
【问题描述】:

我做了以下js.erb:

#= require cable

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

我希望 sprockets 在 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

在看到 sprocket-rails https://github.com/rails/sprockets-rails/commit/9a61447e1c34ed6d35c358935bcae4522b60b48d 的这个提交后,我有了这个想法

但这并没有像我预期的那样奏效。

理想情况下,我希望能够在我的初始化程序中注册依赖解析器,然后在我的资产中添加//= depend_on 'web-socket-server-url',这样只会重新加载资产。

作为一种解决方法,我可能会在 HTML 标记中添加配置,并在不使用 ERB 的情况下进入 javascript,但感觉不太好。

如何使用 sprockets 完成这项工作?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 assets sprockets rails-sprockets


    【解决方案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
    

    当配置更改时,这将使所有缓存无效,而不是您指出的该文件的缓存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-03
      • 2019-05-27
      • 2016-09-25
      • 1970-01-01
      • 1970-01-01
      • 2020-10-07
      • 1970-01-01
      • 2018-10-18
      相关资源
      最近更新 更多