Ruby — Digest::Digest устарел; Использовать дайджест

Я получаю это предупреждение всякий раз, когда запускаю свои тесты или запускаю сервер rails.

Когда я запускаю grep из папки .rvm, я вижу следующее:

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. Есть ли исправления? Насколько я могу судить, доступных патчей пока нет.

В то время как мое приложение использует туман и кучу других драгоценных камней, у которых есть проблемы, связанные с этим сообщением, я использую пропатченные версии, в которых нет ошибки. Так что я считаю, что здесь виноват Руби.


person stephenmurdoch    schedule 17.01.2014    source источник


Ответы (3)


Заимствую ответ из этой темы

OpenSSL::Digest::Digest не рекомендуется использовать из очень древняя эпоха, такая как Ruby 1.8 и, наконец, недавно устарела.

Если вы выполните поиск сообщения об ошибке, вы увидите, что многие драгоценные камни, включая туман, все еще использовали устаревший синтаксис.

Я предполагаю, что пройдет некоторое время, прежде чем все драгоценные камни будут обновлены. Если вы столкнулись с устареванием одной из используемых вами библиотек, я рекомендую вам сообщить об этом сопровождающему.

Вот несколько примеров

Вероятно, ваше приложение Rails зависит от драгоценного камня, использующего этот старый синтаксис.

person Simone Carletti    schedule 17.01.2014

Если вы используете упаковщик, хороший способ выяснить, что вызывает проблему, — это просмотреть все драгоценные камни, определенные в вашем 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

Также убедитесь, что вы не заблокированы на версии gem в вашем Gemfile.

# change
gem 'fog', '~> 1.15.0'
# to
gem 'fog', '~> 1.0'
# or omit the version if you are a cowboy/girl
person mraaroncruz    schedule 04.04.2015
comment
Пробовал этот трюк как локально, так и на dev, и grep вернулся пустым. - person gitb; 24.01.2016
comment
@gitb Попробуйте найти только часть имени, например Digest. Может быть, они разбили его по линиям. Кроме того, это либо в вашем коде (так что grep код вашего проекта), либо я понятия не имею :) - person mraaroncruz; 26.01.2016

Используйте OpenSSL::Digest вместо устаревшего OpenSSL::Digest::Digest

person scottxu    schedule 23.07.2014