3 ms·
> (I don't write Ruby so I don't know if this is overloadable somewhere.) Ruby allows overriding the == operator[1], but OpenSSL::HMAC.digest returns an instan
by beefhash 11y ago
> (I don't write Ruby so I don't know if this is overloadable somewhere.)
Ruby allows overriding the == operator[1], but OpenSSL::HMAC.digest returns an instance of String[2], rather than returning a special subclass of string or some other kind of special HMAC-representing class overloading ==.
[1] http://docs.ruby-lang.org/en/2.2.0/syntax/methods_rdoc.html#label-Method+Names http://docs.ruby-lang.org/en/2.2.0/syntax/methods_rdoc.html#...
[2] http://ruby-doc.org/stdlib-2.0.0/libdoc/openssl/rdoc/OpenSSL/HMAC.html#method-c-digest http://ruby-doc.org/stdlib-2.0.0/libdoc/openssl/rdoc/OpenSSL...
- vidarh 11y agoTo be pedantic, in Ruby, the fact that an object is of class String is not sufficient evidence that a method has not been overloaded (they can be overloaded via the objects eigenclass), though you're probably right.
- Freaky 11y agoEven if it did (and it doesn't, I checked), you're probably still better off doing it explicitly since it's easier to audit, less likely to differ across implementations, and less error prone (e.g. swap the order of the comparison and you're back to plain old String#==).