Skip to content

Commit

Permalink
Logger for gzip (#4)
Browse files Browse the repository at this point in the history
* Spec updated to check gz creation

* Cache disabled for specs

* Using Rails.public_path on specs

* Logger info for .map and .map.gz
  • Loading branch information
javier-menendez authored Oct 6, 2023
1 parent 1aed02d commit b0a8a86
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 9 deletions.
13 changes: 8 additions & 5 deletions lib/sprockets_terser_with_source_maps/compressor.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ def call(input)
sourcemap['sourcesContent'] = [data]
else
# Generate uncompressed asset
uncompressed_url, = generate_asset_file(name, data, Rails.application.config.assets.uncompressed_prefix)
uncompressed_url = generate_asset_file(name, data, Rails.application.config.assets.uncompressed_prefix)

sourcemap['sources'] = [uncompressed_url]
end
Expand All @@ -39,12 +39,11 @@ def call(input)
sourcemap_json = sourcemap.to_json

# Generate sourcemap file
sourcemap_url, sourcemap_path = generate_asset_file(
sourcemap_url = generate_asset_file(
name, sourcemap_json,
Rails.application.config.assets.sourcemaps_prefix,
'js.map'
)
logger.info "Writing #{sourcemap_path}"

compressed_js.concat "\n//# sourceMappingURL=#{sourcemap_url}\n"
end
Expand All @@ -53,14 +52,16 @@ def call(input)

def generate_asset_file(name, data, prefix, extension = 'js')
filename = File.join(Rails.application.config.assets.prefix, prefix, "#{name}-#{digest(data)}.#{extension}")
file_path = File.join(Rails.public_path, filename)
file_path = File.join(Rails.public_path.to_s, filename)
file_url = filename_to_url(filename)

logger.info "Writing #{file_path}" if !File.exist?(file_path) && file_path.include?('.map')

FileUtils.mkdir_p File.dirname(file_path)
File.write(file_path, data)
gzip_file(file_path) if gzip?

[file_url, file_path]
file_url
end

def filename_to_url(filename)
Expand All @@ -81,6 +82,8 @@ def gzip?
end

def gzip_file(path)
logger.info "Writing #{path}.gz" if !File.exist?("#{path}.gz") && path.include?('.map')

Zlib::GzipWriter.open("#{path}.gz") do |gz|
gz.mtime = File.mtime(path)
gz.orig_name = path
Expand Down
5 changes: 5 additions & 0 deletions spec/rails_app/config/application.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,8 @@ class Application < Rails::Application
config.eager_load = false
end
end

# Cache disabled
Rails.application.config.assets.configure do |env|
env.cache = ActiveSupport::Cache.lookup_store(:null_store)
end
7 changes: 3 additions & 4 deletions spec/railtie_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -32,17 +32,15 @@
prefix = Rails.application.config.assets.prefix
source_prefix = Rails.application.config.assets.uncompressed_prefix
source_path = File.join(
app.root,
'public',
Rails.public_path.to_s,
prefix,
source_prefix,
'application-67edb0733821d001c895de576601b754165d9a2a350e6abd1e8c009d9ea24c1c.js'
)

map_prefix = Rails.application.config.assets.sourcemaps_prefix
map_path = File.join(
app.root,
'public',
Rails.public_path.to_s,
prefix,
map_prefix,
'application-8e484580fdd7121444478bdee52a61a6e8d44684c6c7fe030bde5979a58a13c6.js.map'
Expand All @@ -53,6 +51,7 @@
expect(File.exist?(path)).to be
expect(File.exist?(source_path)).to be
expect(File.exist?(map_path)).to be
expect(File.exist?("#{map_path}.gz")).to be
end
end
end

0 comments on commit b0a8a86

Please sign in to comment.