class JsRoutes::Engine

Public Class Methods

install_sprockets!() click to toggle source
# File lib/js_routes/engine.rb, line 34
def self.install_sprockets!
  return if defined?(@installed_sprockets)
  require 'sprockets/version'
  v2                = Gem::Dependency.new('', ' ~> 2')
  vgte3             = Gem::Dependency.new('', ' >= 3')
  sprockets_version = Gem::Version.new(::Sprockets::VERSION).release
  initializer_args  = case sprockets_version
                        when -> (v) { v2.match?('', v) }
                          { after: "sprockets.environment" }
                        when -> (v) { vgte3.match?('', v) }
                          { after: :engines_blank_point, before: :finisher_hook }
                        else
                          raise StandardError, "Sprockets version #{sprockets_version} is not supported"
                      end

  initializer 'js-routes.dependent_on_routes', initializer_args do
    case sprockets_version
      when  -> (v) { v2.match?('', v) },
            -> (v) { vgte3.match?('', v) }

      Rails.application.config.assets.configure do |config|
        config.register_preprocessor(
          "application/javascript",
          SprocketsExtension,
        )
      end
    else
      raise StandardError, "Sprockets version #{sprockets_version} is not supported"
    end
  end
  @installed_sprockets = true
end