Ruby - Digest :: Digest已弃用; 使用摘要

ste*_*och 35 ruby warnings ruby-2.1

每当我运行测试或启动rails服务器时,我都会收到此警告.

当我从.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
Run Code Online (Sandbox Code Playgroud)

所以它看起来像是一个Ruby 2.1.0错误.有没有修复?据我所知,目前还没有可用的补丁.

虽然我的应用程序使用Fog和其他一些与此消息有关的问题,但我使用的是没有错误的修补版本.所以我认为Ruby在这里有错.

Sim*_*tti 49

借用这个帖子的回复

不鼓励OpenSSL :: Digest :: Digest使用非常古老的时代,例如Ruby 1.8,最近最近被弃用了.

如果您搜索错误消息,您将看到许多宝石(包括雾)仍在使用已弃用的语法.

我假设在更新所有宝石之前需要一段时间.如果您在其中一个库中发现了弃用,我建议您将其报告给维护者.

这是一些例子

你的Rails应用程序可能依赖于使用旧语法的gem.

  • s3_direct_upload是另一个带有此弃用警告的gem:https://github.com/waynehoover/s3_direct_upload/issues/148 (2认同)

mra*_*ruz 23

如果你正在使用bundler,找到造成问题的原因的一个好方法是浏览你所定义的所有gem Gemfile:

# 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
Run Code Online (Sandbox Code Playgroud)

还要确保您没有锁定Gemfile中的gem版本.

# change
gem 'fog', '~> 1.15.0'
# to
gem 'fog', '~> 1.0'
# or omit the version if you are a cowboy/girl
Run Code Online (Sandbox Code Playgroud)


sco*_*txu 9

使用OpenSSL::Digest而不是弃用OpenSSL::Digest::Digest