8

私はここで奇妙なことに遭遇しています。パスワードとして一致する特定の文字列をハッシュするために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 を機能させるために何が欠けていますか?

4

2 に答える 2

34

Digest::MD5 はメソッドではなくモジュールです。試す

Digest::MD5.digest("test")
于 2012-08-23T10:48:23.557 に答える