Permalink
Browse files

Using the sum of bytes instead the hash of the path when replacing th…

…e wildcard of the assets path because in ruby 1.9 is not consistent
  • Loading branch information...
1 parent 298a083 commit f6a6b51ae551b7f936e974cba3ad4b30422d6804 @acroca acroca committed Jul 7, 2011
Showing with 5 additions and 3 deletions.
  1. +2 −1 actionpack/lib/action_view/asset_paths.rb
  2. +3 −2 actionpack/test/template/asset_tag_helper_test.rb
@@ -111,7 +111,8 @@ def compute_asset_host(source)
args << current_request if (arity > 1 || arity < 0) && has_request?
host.call(*args)
else
- (host =~ /%d/) ? host % (source.hash % 4) : host
+ source_num = source.bytes.sum
@fxn

fxn Jul 7, 2011

Owner

Just wondering, is the sum better than just taking source.bytes % 4? I think source.bytes will generally be evenly distributed mod 4, a priori I see no bias in the number of bytes of an asset.

@fxn

fxn Jul 7, 2011

Owner

Well, the last char may have a bias, it will generally be "s", (css, js), g (png, jpg)... nah, forget the comment.

@tenderlove

tenderlove Jul 7, 2011

Owner

Is this hash supposed to be unique?

+ (host =~ /%d/) ? host % (source_num % 4) : host
end
end
end
@@ -689,9 +689,9 @@ def test_caching_javascript_include_tag_when_caching_on_and_using_subdirectory
@controller.config.asset_host = 'http://a%d.example.com'
config.perform_caching = true
- hash = '/javascripts/cache/money.js'.hash % 4
+ number = '/javascripts/cache/money.js'.bytes.sum % 4
assert_dom_equal(
- %(<script src="http://a#{hash}.example.com/javascripts/cache/money.js" type="text/javascript"></script>),
+ %(<script src="http://a#{number}.example.com/javascripts/cache/money.js" type="text/javascript"></script>),
javascript_include_tag(:all, :cache => "cache/money")
)
@@ -1129,6 +1129,7 @@ def test_should_ignore_asset_host_on_scheme_relative_url
end
def test_should_wildcard_asset_host_between_zero_and_four
+ String.any_instance.expects(:hash).times(0)
@tenderlove

tenderlove Jul 7, 2011

Owner

This is not a good assertion. Are we not allowed to use strings as hash keys in our implementation?

@controller.config.asset_host = 'http://a%d.example.com'
assert_match(%r(http://a[0123].example.com/collaboration/hieraki/images/xml.png), image_path('xml.png'))
end

0 comments on commit f6a6b51

Please sign in to comment.