Skip to content

Commit

Permalink
Do not change any digest when the environment version changes
Browse files Browse the repository at this point in the history
The digests should be a direct result of the source digest. Only cache
related values should change.
  • Loading branch information
rafaelfranca committed Jun 5, 2020
1 parent 5038ad5 commit 9129f5e
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 6 deletions.
6 changes: 4 additions & 2 deletions lib/sprockets/asset.rb
Original file line number Diff line number Diff line change
Expand Up @@ -130,11 +130,13 @@ def environment_version

# Public: Returns String hexdigest of source.
def hexdigest
DigestUtils.pack_hexdigest(environment_version + digest)
DigestUtils.pack_hexdigest(digest)
end

# Pubic: ETag String of Asset.
alias_method :etag, :hexdigest
def etag
DigestUtils.pack_hexdigest(environment_version + digest)
end

# Public: Returns String base64 digest of source.
def base64digest
Expand Down
40 changes: 36 additions & 4 deletions test/test_environment.rb
Original file line number Diff line number Diff line change
Expand Up @@ -723,13 +723,45 @@ def setup
test "changing version changes the digest_path of the asset" do
old_asset_digest = @env["gallery.js"].digest_path
@env.version = 'v2'
assert old_asset_digest != @env["gallery.js"].digest_path
refute_equal old_asset_digest, @env["gallery.js"].digest_path
end

test "changing version changes the digest of the asset" do
old_asset_digest = @env["gallery.js"].hexdigest
test "changing version changes the etag of the asset" do
old_asset_etag = @env["gallery.js"].etag
@env.version = 'v2'
assert old_asset_digest != @env["gallery.js"].hexdigest
refute_equal old_asset_etag, @env["gallery.js"].etag
end

test "changing version does not changes the digest of the asset" do
old_asset_digest = @env["gallery.js"].digest

@env.version = 'v2'

assert_equal old_asset_digest, @env["gallery.js"].digest
end

test "changing version does not changes the hexdigest of the asset" do
old_asset_hexdigest = @env["gallery.js"].hexdigest

@env.version = 'v2'

assert_equal old_asset_hexdigest, @env["gallery.js"].hexdigest
end

test "changing version does not changes the base64digest of the asset" do
old_asset_base64digest = @env["gallery.js"].base64digest

@env.version = 'v2'

assert_equal old_asset_base64digest, @env["gallery.js"].base64digest
end

test "changing version does not changes the integrity of the asset" do
old_asset_integrity = @env["gallery.js"].integrity

@env.version = 'v2'

assert_equal old_asset_integrity, @env["gallery.js"].integrity
end

test "bundled asset is stale if its mtime is updated or deleted" do
Expand Down

0 comments on commit 9129f5e

Please sign in to comment.