Permalink
Browse files

Merge pull request #31490 from eugeneius/hash_digest_class_truncate

Don't include ellipsis in truncated digest output
  • Loading branch information...
eileencodes committed Dec 18, 2017
2 parents 95117a2 + b9e7c67 commit b2be83fc2c7e8390500e78ba443ef802374e83a0
@@ -1,7 +1,7 @@
* 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

0 comments on commit b2be83f

Please sign in to comment.