#ruby-on-rails #ruby-on-rails-4 #fog
#ruby-на-рельсах #ruby-on-rails-4 #туман
Вопрос:
Я получаю следующую ошибку
Digest::Digest is deprecated; use Digest
когда я пытаюсь загрузить свой rails-сервер. Я попытался найти свой исходный код Digest::Digest
, но я нигде его не использую. есть какие-нибудь идеи, как это решить?
Единственное место, которое я использую, это
<% digest = OpenSSL::Digest.new('sha1') %>
@alias = Digest::MD5.hexdigest(phone)
Комментарии:
1. @AndreyDeineko не могли бы вы поделиться ссылкой? это так — rubygems.org/gems/ackr/versions/0.2.4
2. добавлено еще несколько опций 🙂
Ответ №1:
Скорее всего, он используется одним из драгоценных камней, от которого зависит ваше приложение.
установите (если он еще не установлен) инструмент подтверждения и выполните следующую команду:
# of course, the path to your gems will be different
ack Digest::Digest /Users/username/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.1/gems/
Он покажет вам, использует ли его какой-либо из драгоценных камней, и если да — покажет вам строки исходного кода.
Но в принципе вы мало что можете сделать:
- Проверьте, есть ли у этого драгоценного камня более новая версия, которая устраняет предупреждение об устаревании
- Напишите патч для драгоценного камня, который устраняет предупреждение и использует исправленные версии (не крутая идея, IMO)
- Живите с предупреждением, пока сопровождающие gem не поработают над этим
- Вы можете полностью отключить предупреждения об амортизации с
ActiveSupport::Deprecation.silenced = true
помощью (тоже не очень крутая идея, IMO). Существует также способ отключить конкретное предупреждение, как @max говорит в комментариях):silenced = [ /Digest::Digest is deprecated; use Digest/, /some other warning/, ] silenced_expr = Regexp.new(silenced.join('|')) ActiveSupport::Deprecation.behavior = lambda do |msg, stack| unless msg =~ silenced_expr ActiveSupport::Deprecation::DEFAULT_BEHAVIORS[:stderr].call(msg, stack) end end
- Не используйте этот драгоценный камень
Комментарии:
1. и я использую последние версии: (
2. @HarshaMV тогда, как я уже сказал, вы либо ждете, пока разработчики gem обновят его, либо работаете с предупреждающим сообщением..
3. @HarshaMV никаких проблем 🙂
4. Вы можете отключить уведомления об амортизации с
ActiveSupport::Deprecation.silenced = true
помощью или с помощьюActiveSupport::Deprecation.silenced do; end
.5. @max полностью забыл об этом, отредактирует ответ