Предупреждение Ruby 2.0.0p0 IRB: «DL устарел, используйте Fiddle»

187

Я только что удалил свои старые версии Ruby, удалил все мои драгоценные камни (включая Rails) и установлен Ruby 2.0. Другими словами, полностью чистая переустановка. После запуска IRB я получил это сообщение:

DL is deprecated, please use Fiddle

Примечание. Я нахожусь на компьютере с Windows.

Что означает это сообщение?

  • 2
    Каково содержимое вашего файла ~/.irbrc ?
  • 2
    Извините за мое невежество, но где я могу найти этот файл?
Показать ещё 6 комментариев
Теги:

5 ответов

217
Лучший ответ

Сообщение, которое вы получили, является общим, если у вас ruby 2.0.0p0 (2013-02-24) поверх Windows.

Сообщение "DL is deprecated, please use Fiddle" не является ошибкой; это только предупреждение.

Источником является Уведомление об изъятии для DL, введенное некоторое время назад в dl.rb (см. revisions/37910).

В Windows файл lib/ruby/site_ruby/2.0.0/readline.rb по-прежнему требует dl.rb, поэтому предупреждающее сообщение появляется, когда вы require 'irb' (потому что irb требует 'readline') или когда что-либо еще хочет require 'readline'.

Вы можете открыть readline.rb своим любимым текстовым редактором и посмотреть код (рядом с линией 4369):

    if RUBY_VERSION < '1.9.1'
      require 'Win32API'
    else
      require 'dl'
      class Win32API
        DLL = {}

Мы всегда можем надеяться на улучшение разработки этой устаревшей версии в будущих выпусках Ruby.

EDIT: Для тех, кто хочет углубиться в Fiddle vs DL, можно сказать, что их целью является динамическое связывание внешних библиотек с Ruby; вы можете прочитать на веб-сайте ruby-doc DL или Fiddle.

  • 1
    Начиная с ruby 2.0.0p247 - rbreadline.rb не существует.
  • 0
    @webRat Просто отредактируйте сообщение; Я согласен с вами, rbrealine.rb был введен неправильно (я полагаю) Редактировать сообществом. Спасибо за внимание!
Показать ещё 8 комментариев
73

Вы можете запросить предупреждение DL is deprecated, please use Fiddle в

C:\Ruby200\lib\ruby\2.0.0\dl.rb

так как его раздражает, и вы не являетесь владельцем кода irb/pry или какого-либо другого владельца драгоценных камней

  • 3
    Если вы получаете эту ошибку при запуске vagrant up в Windows, этот файл можно найти по адресу C:\vagrant\embedded\lib\ruby\2.0.0dl.rb
  • 1
    Спасибо @syj, мой был расположен в C:\HashiCorp\Vagrant\embedded\lib\ruby\2.0.0\dl.rb
Показать ещё 2 комментария
3

Сообщение "DL устарело, используйте Fiddle", это не ошибка; это только предупреждение.
Решение:
Вы можете игнорировать это в 3 простых шага.
Шаг 1. Перейти к C:\RailsInstaller\Ruby2.1.0\lib\ruby ​​\ 2.1.0
Шаг 2. Затем найдите dl.rb и откройте файл с помощью любых онлайн-редакторов, таких как Aptana, возвышенный текст и т.д.
Шаг 3. Прокомментируйте строку 8 с помощью "#", то есть # warn "DL устарел, используйте Fiddle".
Это, спасибо.

3

Я получил эту резолюцию в openshift.com.

Разрешение:

Эта ошибка возникает только на Windows-машине с версией Ruby 2.0.0. Пока мы официально не поддержим Ruby 2.0, пожалуйста, понизите рейтинг до Ruby 1.9.

В Windows вы можете установить Ruby 1.9.3 вместе с 2.0. Измените % PATH% до c:\ruby193\ или любой другой каталог, который вы установили ранее для установки драгоценного камня.

  • 0
    Не могли бы вы дополнительно дать ссылку на решение на openshift.com?
  • 0
    Планируется ли официальная поддержка ruby 2.0 в ближайшем будущем?
Показать ещё 1 комментарий
1

Я столкнулся с этим сам, когда захотел сделать команду под Windows под Windows.

Чтобы избежать появления этого сообщения каждый раз, когда я запускал мое приложение-приложение, я временно отключил предупреждения при загрузке тора:

begin
  original_verbose = $VERBOSE
  $VERBOSE = nil
  require "thor"
ensure
  $VERBOSE = original_verbose
end

Это избавило меня от необходимости редактировать исходные файлы сторонних разработчиков.

  • 0
    классное решение, оно не требует изменений в чужом коде.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню