BigW Consortium Gitlab

webpack_helper.rb 1.22 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13
require 'webpack/rails/manifest'

module WebpackHelper
  def webpack_bundle_tag(bundle)
    javascript_include_tag(*gitlab_webpack_asset_paths(bundle))
  end

  # override webpack-rails gem helper until changes can make it upstream
  def gitlab_webpack_asset_paths(source, extension: nil)
    return "" unless source.present?

    paths = Webpack::Rails::Manifest.asset_paths(source)
    if extension
14
      paths.select! { |p| p.ends_with? ".#{extension}" }
15 16
    end

17 18 19 20 21 22 23 24 25
    force_host = webpack_public_host
    if force_host
      paths.map! { |p| "#{force_host}#{p}" }
    end

    paths
  end

  def webpack_public_host
26 27 28 29
    if Rails.env.test? && Rails.configuration.webpack.dev_server.enabled
      host = Rails.configuration.webpack.dev_server.host
      port = Rails.configuration.webpack.dev_server.port
      protocol = Rails.configuration.webpack.dev_server.https ? 'https' : 'http'
30 31 32
      "#{protocol}://#{host}:#{port}"
    else
      ActionController::Base.asset_host.try(:chomp, '/')
33
    end
34
  end
35

36
  def webpack_public_path
37 38 39
    relative_path = Rails.application.config.relative_url_root
    webpack_path = Rails.application.config.webpack.public_path
    File.join(webpack_public_host.to_s, relative_path.to_s, webpack_path.to_s, '')
40 41
  end
end