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

196

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

DL устарел, используйте Fiddle

Примечание: я на машине с Windows.

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

fbonetti
источник
2
Каково содержимое вашего ~/.irbrcфайла?
Тодд А. Джейкобс
2
Простите за мое невежество, но где я могу найти этот файл?
fbonetti
1
@CodeGnome Обратите внимание, что @effbot находится на компьютере с Windows. Из того, что я вижу, Windows не имеет .irbrcпо умолчанию.
Чарльз Колдуэлл
2
warnВы получаете приходит из файла «Ruby200 \ Lib \ рубин \ 2.0.0 \ dl.rb». Я получаю это также, когда я запускаю irbили pry.
Чарльз Колдуэлл
14
Это такое плохо написанное сообщение. Что такое DL? Что за скрипка? Почему я должен измениться? Как я могу изменить?
полковник Паник

Ответы:

208

Полученное вами сообщение часто встречается, когда вы работаете 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 .

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

Франко Рондини
источник
@webRat Просто отредактируйте сообщение; Я согласен с вами, rbrealine.rb был введен неправильно (я полагаю) Редактировать сообществом. Спасибо за внимание!
Франко Рондини
1
Все это звучит так неудовлетворительно. Во всяком случае, принимая к сведению комментарий ниже от Msangle, "Что такое скрипка?"
будет
1
@Paul, в последних двух строках ответа есть две ссылки, которые, возможно, вы еще не видели: ruby-doc.org/stdlib-2.0.0/libdoc/fiddle/rdoc/Fiddle.html , ruby-doc.org/ stdlib-2.0.0 / libdoc / dl / rdoc / DL.html
Франко
2
На моей машине с Windows я нашел эти файлы rbreadline.rbи readline.rbна C:\RailsInstaller\Ruby2.1.0\lib\ruby\site_ruby\2.1.0\ . Я изменил строку с require 'dl'на require 'fiddle'. Нет больше предупреждений.
Blairg23
1
Боюсь, это не сработает, поскольку в будущем существуют зависимости @ Blairg23
Martin Greenaway,
74

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

C: \ Ruby200 \ Lib \ рубин \ 2.0.0 \ dl.rb

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

Эрвин Кадди
источник
3
Если вы получаете эту ошибку при работе vagrant upв Windows, этот файл можно найти по адресу C:\vagrant\embedded\lib\ruby\2.0.0dl.rb.
SJY
1
Спасибо @syj, моя была расположена вC:\HashiCorp\Vagrant\embedded\lib\ruby\2.0.0\dl.rb
mpen
C: \ RailsInstaller \ Ruby2.1.0 \ lib \ ruby ​​\ 2.1.0 \ dl.rb строка 8
Сунил Б.Н.
3

Я получил это разрешение на openshift.com .

Разрешение:

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

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

Gaurav
источник
Не могли бы вы дополнительно дать ссылку на решение на openshift.com?
Александр Фогт
Планируется ли официально поддерживать ruby ​​2.0 в ближайшем будущем?
Бернхард
@AlexanderVogt На решение теперь ссылаются. Смотрите мое редактирование выше.
Род Аргумедо
3

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

Арун Атлури
источник
2

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

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

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

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

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