2012-08-23 34 views
8

Tôi đang gặp phải điều gì đó lạ ở đây. Tôi có "trình xác thực" dựa trên ND5 để băm một chuỗi nhất định mà chúng tôi đối sánh dưới dạng mật khẩu. Vấn đề khi tôi chạy thử nghiệm của tôi là:Thông báo :: MD5 trong 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' 

Vì vậy, về cơ bản, anh ta không nhận ra MD5 như một phần của thư viện Digest. Vấn đề này xảy ra khi chạy các bài kiểm tra trong IDE, cũng như trong giao diện điều khiển IRB:

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

Tuy nhiên, khi tôi chạy như sau:

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

tôi nhận được không có lỗi, bãi hoặc ngoại lệ . Ruby chỉ chấp nhận nó. Tôi đang thiếu gì để có được công cụ MD5 này hoạt động?

Trả lời

33

Thông báo :: MD5 không phải là phương pháp mà là mô-đun. Hãy thử

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

cảm ơn, đã làm việc ...... Tôi là một tên ngốc vì không thấy điều này: S –

+1

Bạn có thể cung cấp liên kết đến tài liệu hướng dẫn phương pháp không? – Kostas

+18

Digest :: MD5.hexdigest cũng khá tốt – reconbot

0

Tôi thấy khó hiểu, có vẻ như không .digest là chính xác. Tôi không thể nói điều đó sai ...

Người nhận @reconbot hiểu đúng, IMO, nhưng tôi chỉ thấy bình luận sau khi quay trở lại để cải thiện QA này, tôi nghĩ rằng nhận xét không hiển thị đủ.

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

Dưới đây là một ví dụ cho việc sử dụng md5 hasing để sử dụng vượn, viên ngọc MailChimp.

md5_hashed_email_address = Digest::MD5.hexdigest("[email protected]") 
Các vấn đề liên quan