提交 b9e7c676 编写于 作者: E Eugene Kenny

Don't include ellipsis in truncated digest output

Using `truncate` to limit the length of the digest has the unwanted side
effect of adding an ellipsis when the input is longer than the limit.

Also:
 - Don't instantiate a new object for every digest
 - Rename the configuration option to `hash_digest_class`
 - Update the CHANGELOG entry to describe how to use the feature
上级 28d29685
* Introduced `ActiveSupport::Digest` that allows to specify hash function implementation
and defaults to `Digest::MD5`.
* Allow the hash function used to generate non-sensitive digests, such as the
ETag header, to be specified with `config.active_support.hash_digest_class`.
Replaced calls to `::Digest::MD5.hexdigest` with calls to `ActiveSupport::Digest.hexdigest`.
The object provided must respond to `#hexdigest`, e.g. `Digest::SHA1`.
*Dmitri Dolguikh*
......
......@@ -13,16 +13,8 @@ def hash_digest_class=(klass)
end
def hexdigest(arg)
new.hexdigest(arg)
hash_digest_class.hexdigest(arg)[0...32]
end
end
def initialize(digest_class: nil)
@digest_class = digest_class || self.class.hash_digest_class
end
def hexdigest(arg)
@digest_class.hexdigest(arg).truncate(32)
end
end
end
......@@ -68,9 +68,9 @@ class Railtie < Rails::Railtie # :nodoc:
end
initializer "active_support.set_hash_digest_class" do |app|
if app.config.active_support.respond_to?(:use_hash_digest_class) && app.config.active_support.use_hash_digest_class
if app.config.active_support.respond_to?(:hash_digest_class) && app.config.active_support.hash_digest_class
ActiveSupport::Digest.hash_digest_class =
app.config.active_support.use_hash_digest_class
app.config.active_support.hash_digest_class
end
end
end
......
......@@ -16,7 +16,7 @@ def test_with_custom_hash_digest_class
digest = ActiveSupport::Digest.hexdigest("hello friend")
assert_equal 32, digest.length
assert_equal ::Digest::SHA1.hexdigest("hello friend").truncate(32), digest
assert_equal ::Digest::SHA1.hexdigest("hello friend")[0...32], digest
ensure
ActiveSupport::Digest.hash_digest_class = original_hash_digest_class
end
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册