Попередження IRB 2.0.0p0 IRB: "DL застаріло, будь ласка, використовуйте Fiddle"


196

Я щойно видалив свої старі версії Ruby, видалив усі мої дорогоцінні камені (включаючи Rails) та встановив Ruby 2.0. Іншими словами, повністю чиста перевстановлення. Після запуску IRB я отримав це повідомлення:

DL застаріло, будь ласка, використовуйте Fiddle

Примітка. Я перебуваю на машині Windows.

Що означає це повідомлення?


2
Який вміст вашого ~/.irbrcфайлу?
Тодд А. Джейкобс

2
Вибачте моє незнання, але де я можу знайти цей файл?
fbonetti

1
@CodeGnome Зауважте, що @effbot знаходиться на машині Windows. Як я бачу, у Windows .irbrcза замовчуванням немає.
Чарльз Колдвелл

2
warnВи отримуєте приходить з файлу «Ruby200 \ Lib \ рубін \ 2.0.0 \ dl.rb». Я отримую це також, коли запускаю irbабо pry.
Чарльз Колдвелл

14
Це таке погано написане повідомлення. Що DL? Що таке Fiddle? Чому я повинен змінюватись? Як я можу змінитись?
Полковник Паніка

Відповіді:


208

Повідомлення , яке ви отримали загальне , коли у вас є ruby 2.0.0p0 (2013-02-24)на вершині Windows , .

Повідомлення " DL is deprecated, please use Fiddle" не є помилкою; це лише попередження .

Джерелом є повідомлення про депрекацію для DL, яке було введено деякий час тому в dl.rb(див. Редакції / 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 .


@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

74

Ви можете прокоментувати 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.
sjy

1
Спасибі @syj, моя була розташована вC:\HashiCorp\Vagrant\embedded\lib\ruby\2.0.0\dl.rb
квітня

C: \ RailsInstaller \ Ruby2.1.0 \ lib \ ruby ​​\ 2.1.0 \ dl.rb рядок 8
Sunil BN

3

Цю резолюцію я отримав на openshift.com .

Роздільна здатність:

Ця помилка трапляється лише на машині Windows з версією Ruby 2.0.0. Поки ми офіційно не підтримаємо Ruby 2.0, перейдіть на Ruby 1.9.

У Windows ви можете встановити Ruby 1.9.3 поряд із 2.0. Змініть% PATH% на c:\ruby193\будь-який інший каталог, який ви встановили до встановлення дорогоцінного каміння.


Чи можете ви додатково надати посилання на рішення на 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 з '#', тобто, # попереджають: "DL застаріле, будь ласка, використовуйте Fiddle".
Це все, дякую.


2

Я сам наткнувся на це, коли хотів зробити команду thor під Windows.

Щоб уникнути появи цього повідомлення щоразу, коли я запускав свою програму Thor, я тимчасово відключав попередження під час завантаження thor:

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

Це врятувало мене від необхідності редагувати вихідні файли сторонніх розробників.


класне рішення, воно не потребує змін у коді інших людей.
Бернхард
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.