2012-08-23 10 views
8

私はここで奇妙なことをしています。 私はパスワードとして一致する特定の文字列をハッシュするためにND5に依存する "オーセンティケーター"を持っています。だから、基本的に彼はダイジェストライブラリの一部としてMD5を認識しませんRubyのDigest :: MD5 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' 

:私は私のテストを実行して問題がこれです。私は次のことを実行すると、しかし

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

:IDEで、だけでなく、IRBコンソールでテストを実行している場合 、この問題が発生し

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

私はエラーを受信しない、ダンプまたは例外。 Rubyはただそれを受け入れます。 このMD5の作業には何が欠けていますか?

答えて

33

Digest :: MD5はメソッドではなくモジュールです。試してみてください

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

おかげで、私はこれを見ていないため、このような馬鹿だ......働い:S –

+1

あなたは、メソッドのドキュメントへのリンクをしてください提供してもらえますか? – Kostas

+18

Digest :: MD5.hexdigestもかなり良いです – reconbot

0

私はそれが混乱していると感じました。.digestが正しいとは思われません。どちらも間違っているとは言えません...

Commenter @reconbot、IMOですが、このQAを改善するために戻ってきただけでコメントが見えました。以下

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

テナガザルの使用、mailchimp宝石のMD5 hasingための使用例です。

md5_hashed_email_address = Digest::MD5.hexdigest("[email protected]") 
関連する問題