web-dev-qa-db-ja.com

Ruby-Digest :: Digestは非推奨です。ダイジェストを使用してください

テストを実行したり、Rails server。

.rvmフォルダーからgrepを実行すると、次のように表示されます。

grep -R 'Digest::Digest' .
./rubies/Ruby-2.1.0/lib/Ruby/2.1.0/openssl/digest.rb: warn('Digest::Digest is deprecated; Use Digest')
- additional references to openssl and Ruby 2.1.0

Ruby 2.1.0バグのようです。何か修正はありますか?私が知る限り、まだ利用可能なパッチはありません。

私のアプリはFogとこのメッセージに関連する問題がある他の多くの宝石を使用していますが、私はバグのないパッチバージョンを使用しています。だから私はRubyはここで間違っていると思います。

35
stephenmurdoch

this thread からの返信を借用する

OpenSSL :: Digest :: Digestは Ruby 1.8 などの非常に古い時代)から使用することはお勧めできません。最後に 最近非推奨になりました です。

エラーメッセージを検索すると、多くの宝石 fogを含む が非推奨の構文を使用していることがわかります。

すべての宝石が更新されるまでにはしばらく時間がかかると思います。使用しているライブラリの1つで非推奨に遭遇した場合は、それをメンテナに報告することをお勧めします。

ここにいくつかの例があります

Railsアプリは、その古い構文を使用しているgemに依存している可能性があります。

50
Simone Carletti

Bundlerを使用している場合、何が問題の原因であるかを見つける良い方法は、Gemfileで定義されているすべてのgemをgrepすることです。

# grep (ack or ag) the problem code
bundle show --paths | xargs grep -r Digest::Digest                             

# here was my output
~/.gem/Ruby/2.1.0/gems/fog-1.15.0/lib/fog/cloudstack.rb:    @@digest  = OpenSSL::Digest::Digest.new('sha1')
~/.gem/Ruby/2.1.0/gems/fog-1.15.0/lib/fog/core/hmac.rb:      @digest = OpenSSL::Digest::Digest.new('sha1')
~/.gem/Ruby/2.1.0/gems/fog-1.15.0/lib/fog/core/hmac.rb:        @digest = OpenSSL::Digest::Digest.new('sha256')

# update appropriate gems (in my case fog)
gem install fog
bundle update fog

また、GemfileのGemバージョンにロックされていないことを確認してください。

# change
gem 'fog', '~> 1.15.0'
# to
gem 'fog', '~> 1.0'
# or omit the version if you are a cowboy/girl
23
mraaroncruz

使用する OpenSSL::Digest非推奨の代わりにOpenSSL::Digest::Digest

9
scottxu