Sha256: e34d5e8bd1a7c679aa93bba7f63a29c84173af722e9dfc5233992ec18106c1dd

Contents?: true

Size: 1.28 KB

Versions: 5

Compression:

Stored size: 1.28 KB

Contents

require "ember_cli/errors"
require "non-stupid-digest-assets"
require "ember_cli/html_page"

module EmberCli
  class Sprockets
    class AssetPipelineError < BuildError; end
    def initialize(app)
      @app = app
    end

    def register!
      register_or_raise!(Rails.configuration.assets.precompile)
      register_or_raise!(NonStupidDigestAssets.whitelist)
    end

    def index_html(head:, body:)
      html_page = HtmlPage.new(
        content: app.index_file.read,
        head: head,
        body: body,
      )

      html_page.render
    end

    def assets
      ["#{app.name}/assets/vendor", "#{app.name}/assets/#{ember_app_name}"]
    end

    private

    attr_reader :app

    def ember_app_name
      @ember_app_name ||= app.options.fetch(:name) { package_json.fetch(:name) }
    end

    def package_json
      @package_json ||=
        JSON.parse(app.paths.package_json_file.read).with_indifferent_access
    end

    def asset_matcher
      %r{\A#{app.name}/}
    end

    def register_or_raise!(precompiled_assets)
      if precompiled_assets.include?(asset_matcher)
        raise AssetPipelineError.new <<-MSG.strip_heredoc
          EmberCLI application #{app.name.inspect} already registered!
        MSG
      else
        precompiled_assets << asset_matcher
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
ember-cli-rails-0.5.6 lib/ember_cli/sprockets.rb
ember-cli-rails-0.5.5 lib/ember_cli/sprockets.rb
ember-cli-rails-0.5.4 lib/ember_cli/sprockets.rb
ember-cli-rails-0.5.3 lib/ember_cli/sprockets.rb
ember-cli-rails-0.5.2 lib/ember_cli/sprockets.rb