Ruby 1.9.3中的摘要:: MD5

时间:2012-08-23 10:38:15

标签: ruby rubygems md5 irb ruby-1.9.3

我在这里碰到了一些奇怪的东西。 我有一个“身份验证器”依赖ND5来哈希我们匹配的某个字符串作为密码。我运行测试时遇到的问题是:

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'

所以基本上他不承认MD5是Digest库的一部分。 在IDE中以及在IRB控制台中运行测试时会发生此问题:

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

但是,当我运行以下内容时:

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

我没有收到错误,转储或例外。 Ruby只接受它。 为了让这个MD5工作起作用,我缺少什么?

2 个答案:

答案 0 :(得分:33)

Digest :: MD5不是一种方法,而是一种模块。尝试

Digest::MD5.digest("test")

答案 1 :(得分:0)

我发现它令人困惑,似乎Java.lang.Integer似乎不正确。我不能说这是错的......

评论者@reconbot说得对,IMO,但我在回来改进这个质量保证后才看到评论,我认为评论不够明确。

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

以下是md5使用长臂猿使用的示例用法,即mailchimp gem。

.digest