PERF: make development tolerable under sprockets 3

This commit is contained in:
Sam 2016-05-13 18:25:03 +10:00
parent a13b48e001
commit d9bcf85edc
1 changed files with 56 additions and 0 deletions

View File

@ -0,0 +1,56 @@
# This contains two patches to make sprockets more tolerable in dev
#
# 1. Stop computing asset paths which triggers sprockets to do mountains of work
# All our assets in dev are in the /assets folder anyway
#
# 2. Stop using a concatenator that does tons of work checking for semicolons when
# when rebuilding an asset
if Rails.env == "development"
module ActionView::Helpers::AssetUrlHelper
def asset_path(source, options = {})
source = source.to_s
return "" unless source.present?
return source if source =~ URI_REGEXP
tail, source = source[/([\?#].+)$/], source.sub(/([\?#].+)$/, '')
if extname = compute_asset_extname(source, options)
source = "#{source}#{extname}"
end
if source[0] != ?/
# CODE REMOVED
# source = compute_asset_path(source, options)
source = "/assets/#{source}"
end
relative_url_root = defined?(config.relative_url_root) && config.relative_url_root
if relative_url_root
source = File.join(relative_url_root, source) unless source.starts_with?("#{relative_url_root}/")
end
if host = compute_asset_host(source, options)
source = File.join(host, source)
end
"#{source}#{tail}"
end
alias_method :path_to_asset, :asset_path # aliased to avoid conflicts with an asset_path named route
end
module ::SprocketHack
def self.concat_javascript_sources(buf, source)
if buf.bytesize > 0
# CODE REMOVED HERE
buf << ";" # unless string_end_with_semicolon?(buf)
buf << "\n" # unless buf.end_with?("\n")
end
buf << source
end
end
Sprockets.register_bundle_metadata_reducer 'application/javascript', :data, proc { "" }, ::SprocketHack.method(:concat_javascript_sources)
end