Sha256: 6b5f60f2ebef89b37699323ed8592818a9158f40f74103bb1a2bc8b9872039bc

Contents?: true

Size: 1.57 KB

Versions: 2

Compression:

Stored size: 1.57 KB

Contents

require 'sprockets/helpers/rails_helper'

module Sprockets
  module Helpers
    module RailsHelper
      def javascript_include_tag_with_enforced_precompile(*sources)
        sources_without_options(sources).each do |source|
          ensure_asset_will_be_precompiled!(source, 'js') if enforce_precompile?
        end
        javascript_include_tag_without_enforced_precompile(*sources)
      end
      alias_method_chain :javascript_include_tag, :enforced_precompile

      def stylesheet_link_tag_with_enforced_precompile(*sources)
        sources_without_options(sources).each do |source|
          ensure_asset_will_be_precompiled!(source, 'css') if enforce_precompile?
        end
        stylesheet_link_tag_without_enforced_precompile(*sources)
      end
      alias_method_chain :stylesheet_link_tag, :enforced_precompile


      private

      def sources_without_options(sources)
        sources.last.is_a?(Hash) && sources.last.extractable_options? ? sources[0..-2] : sources
      end

      def enforce_precompile?
        Rails.application.config.assets.enforce_precompile
      end

      def ensure_asset_will_be_precompiled!(source, ext)
        asset_file = asset_paths.rewrite_extension(source, nil, ext)
        unless asset_environment.send(:matches_filter, Rails.application.config.assets.precompile, asset_file)
          raise AssetPaths::AssetNotPrecompiledError.new("#{asset_file} must be added to config.assets.precompile, " <<
                                                         "otherwise it won't be precompiled for production!")
        end
      end
      
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
assets_precompile_enforcer-1.0.2 lib/assets_precompile_enforcer/sprockets/helpers/rails_helper.rb
assets_precompile_enforcer-1.0.1 lib/assets_precompile_enforcer/sprockets/helpers/rails_helper.rb