2012-08-23 31 views
8

Me encuentro con algo raro aquí. Tengo un "autentificador" que se basa en ND5 para hash una determinada cadena que coincidamos como contraseña. El problema cuando corro mis pruebas es la siguiente:Digest :: MD5 en Ruby 1.9.3

NoMethodError: undefined method `md5' for #<CASServer::Authenticators::Billing:0x007fd8e6c906a0> 
./models/authenticators/billing.rb:63:in `validate' 
./routes/login.rb:166:in `block (2 levels) in <class:Server>' 
./routes/login.rb:158:in `each' 
./routes/login.rb:158:in `block in <class:Server>' 
(eval):2:in `click_button' 
./features/step_definitions/when_steps.rb:32:in `/^I enter "(.*)" as username and the generated username password and log in$/' 
./features/rubycas.login.feature:14:in `When I enter "username" as username and the generated username password and log in' 

Así que, básicamente, que no reconoce el MD5 como parte de la biblioteca Digest. Este problema se produce al ejecutar las pruebas en el IDE, así como en la consola IRB:

1.9.3-p125 :001 > require "digest/md5" and Digest::MD5("test") 
NoMethodError: undefined method `MD5' for Digest:Module 

Sin embargo, cuando corro el siguiente:

[[email protected] /home/morn/rubycas/current]# ruby 
require "digest/md5" and Digest::MD5("test") 

recibo ningún error, vertederos o excepciones . Ruby simplemente lo acepta. ¿Qué me estoy perdiendo para que funcionen estas MD5?

Respuesta

33

Digest :: MD5 no es un método sino un módulo. Pruebe

Digest::MD5.digest("test") 
+0

gracias, trabajaba ...... yo soy un idiota para no ver esto: S –

+1

¿Podría dar un enlace a la documentación del método, por favor? – Kostas

+18

Digest :: MD5.hexdigest también es bastante bueno – reconbot

0

Me pareció confuso, no parece que .digest es correcto. No puedo decir que esté mal tampoco ...

Comentarista @reconbot lo hizo bien, IMO, pero vi el comentario solo después de volver para mejorar este control de calidad, creo que un comentario no es lo suficientemente visible.

http://ruby-doc.org/stdlib-2.4.0/libdoc/digest/rdoc/Digest/MD5.html

continuación se muestra un ejemplo de uso de Hasing MD5 para el uso del gibón, la gema MailChimp.

md5_hashed_email_address = Digest::MD5.hexdigest("[email protected]") 
Cuestiones relacionadas