首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby - Digest::Digest已弃用;请使用Digest

Ruby - Digest::Digest已弃用;请使用Digest
EN

Stack Overflow用户
提问于 2014-01-17 19:34:45
回答 3查看 16.2K关注 0票数 35

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

当我从.rvm文件夹运行grep时,我看到以下内容:

代码语言:javascript
复制
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的一个bug。有什么修复方法吗?据我所知,目前还没有可用的补丁。

虽然我的应用程序使用了Fog和其他一些与此消息相关的gem,但我使用的是没有bug的补丁版本。所以我认为Ruby在这方面有问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-17 20:13:16

借用this thread的回复

不鼓励在very ancient era such as Ruby 1.8was deprecated recently中使用

OpenSSL::Digest::Digest。

如果你搜索这个错误信息,你会发现很多gem,including fog,仍然在使用不推荐使用的语法。

我认为所有的gem都需要一段时间才能更新。如果您在使用的某个库中遇到弃用的情况,我鼓励您将其报告给维护者。

这里有几个例子

您的Rails应用程序很可能依赖于使用旧语法的gem。

票数 51
EN

Stack Overflow用户

发布于 2015-04-04 21:12:21

如果您正在使用bundler,找出问题原因的好方法是grep遍历Gemfile中定义的所有gem

代码语言:javascript
复制
# 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版本。

代码语言:javascript
复制
# change
gem 'fog', '~> 1.15.0'
# to
gem 'fog', '~> 1.0'
# or omit the version if you are a cowboy/girl
票数 23
EN

Stack Overflow用户

发布于 2014-07-23 15:58:15

使用OpenSSL::Digest而不是过时的OpenSSL::Digest::Digest

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21184960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档