Ruby 2.0.0p0 Ostrzeżenie IRB: „DL jest przestarzałe, użyj Fiddle”


196

Właśnie odinstalowałem moje starsze wersje Ruby, usunąłem wszystkie moje klejnoty (w tym Rails) i zainstalowałem Ruby 2.0. Innymi słowy, całkowicie czysta ponowna instalacja. Po uruchomieniu IRB otrzymałem ten komunikat:

DL jest przestarzałe, użyj Fiddle

Uwaga: korzystam z komputera z systemem Windows.

Co oznacza ta wiadomość?


2
Jaka jest zawartość twojego ~/.irbrcpliku?
— Todd A. Jacobs

2
Przepraszam za moją ignorancję, ale gdzie mogę znaleźć ten plik?
— fbonetti

1
@CodeGnome Zwróć uwagę, że @effbot znajduje się na komputerze z systemem Windows. Z tego co widzę, Windows nie ma .irbrcdomyślnie.
— Charles Caldwell

2
warnOtrzymujesz pochodzi z pliku "Ruby200 \ lib \ ruby \ 2.0.0 \ dl.rb". Rozumiem również, kiedy rozpocznie się albo irbalbo pry.
— Charles Caldwell

14
To taka źle napisana wiadomość. Co to jest DL? Co to jest skrzypce? Dlaczego powinienem zmienić? Jak mogę zmienić?
— Pułkownik Panic

Odpowiedzi:


208

Otrzymanie tej wiadomości jest powszechne, gdy masz ruby 2.0.0p0 (2013-02-24)na szczycie systemu Windows .

Komunikat „ DL is deprecated, please use Fiddle” nie jest błędem; to tylko ostrzeżenie .

Źródłem jest informacja o wycofaniu DL, wprowadzona jakiś czas temu w dl.rb(patrz wersje / 37910 ).

W systemie Windows lib/ruby/site_ruby/2.0.0/readline.rbplik nadal wymaga, dl.rbwięc komunikat ostrzegawczy pojawia się, gdy ty require 'irb'(ponieważ wymaga tego IRB 'readline') lub gdy coś innego chce require 'readline'.

Możesz otworzyć readline.rbw swoim ulubionym edytorze tekstu i wyszukać kod (w pobliżu linii 4369):

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

Zawsze możemy spodziewać się ulepszenia, aby rozwiązać tę deprecjację w przyszłych wydaniach Ruby .

EDYCJA: Dla tych, którzy chcą zagłębić się w Fiddle vs DL , powiedzmy, że ich celem jest dynamiczne łączenie zewnętrznych bibliotek z Ruby; możesz przeczytać na stronie ruby-doc o DL lub Fiddle .


@webRat Po prostu ponownie edytuj post; Zgadzam się z tobą, rbrealine.rb został wprowadzony przez niewłaściwą (jak sądzę) edycję przez społeczność. Dziękuję za uwagę!
— Franco Rondini

1
Wszystko to brzmi tak niezadowalająco. W każdym razie, biorąc pod uwagę komentarz Msangle poniżej „Co to jest skrzypce?”
— będzie

1
@Paul, w dwóch ostatnich wierszach odpowiedzi znajdują się dwa linki, których być może nie widziałeś: ruby-doc.org/stdlib-2.0.0/libdoc/fiddle/rdoc/Fiddle.html , ruby-doc.org/ stdlib-2.0.0 / libdoc / dl / rdoc / DL.html
— Franco Rondini

2
Na moim komputerze z systemem Windows zlokalizowałem te pliki rbreadline.rbi readline.rbna C:\RailsInstaller\Ruby2.1.0\lib\ruby\site_ruby\2.1.0\ . Zmieniłem linię z require 'dl'na require 'fiddle'. Nigdy więcej ostrzeżeń.
— Blairg23,

1
To nie działa, ponieważ istnieją zależności, w dalszym ciągu, @ Blairg23
— Martin Greenaway

74

Możesz skomentować DL is deprecated, please use Fiddleostrzeżenie pod adresem

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

ponieważ jest to denerwujące i nie jesteś właścicielem irb / pry ani innym właścicielem kodu klejnotów


3
Jeśli ten błąd pojawia się podczas uruchamiania vagrant upw systemie Windows, ten plik można znaleźć pod adresem C:\vagrant\embedded\lib\ruby\2.0.0dl.rb.
— sjy

1
Dzięki @syj, moja znajdowała się wC:\HashiCorp\Vagrant\embedded\lib\ruby\2.0.0\dl.rb
— mpen

C: \ RailsInstaller \ Ruby2.1.0 \ lib \ ruby ​​\ 2.1.0 \ dl.rb linia 8
— Sunil BN

3

Mam tę rozdzielczość na openshift.com .

Rozkład:

Ten błąd występuje tylko na komputerze z systemem Windows z wersją Ruby 2.0.0. Do czasu oficjalnego wsparcia Ruby 2.0, zmień wersję na Ruby 1.9.

W systemie Windows można zainstalować Ruby 1.9.3 wraz z wersją 2.0. Zmień% PATH% na c:\ruby193\katalog, który zainstalowałeś, przed instalacją klejnotu.


Czy możesz dodatkowo podać link do rozwiązania na openshift.com?
— Alexander Vogt,

Czy jest jakiś plan oficjalnego wsparcia Ruby 2.0 w najbliższej przyszłości?
— Bernhard

@AlexanderVogt Rozwiązanie jest teraz wymienione. Zobacz moją edycję powyżej.
— Rod Argumedo

3

Komunikat „DL jest przestarzałe, użyj Fiddle” nie jest błędem; to tylko ostrzeżenie.
Rozwiązanie:
Możesz to zignorować w 3 prostych krokach.
Krok 1. Przejdź do C: \ RailsInstaller \ Ruby2.1.0 \ lib \ ruby ​​\ 2.1.0
Krok 2. Następnie znajdź plik dl.rb i otwórz plik za pomocą dowolnych edytorów internetowych, takich jak Aptana, wysublimowany tekst itp.
Krok 3. Skomentuj wiersz 8 za pomocą „#” tzn. # ostrzegaj „DL jest przestarzałe, użyj Fiddle”.
To wszystko, dziękuję.


2

Sam na to wpadłem, gdy chciałem wydać komendę Thor pod Windows.

Aby uniknąć wyświetlania tego komunikatu za każdym razem, gdy uruchamiam aplikację Thor, tymczasowo wyciszyłem ostrzeżenia podczas ładowania Thor:

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

Dzięki temu nie musiałem edytować plików źródłowych stron trzecich.


fajne rozwiązanie, nie wymaga zmian w kodzie innych osób.
— Bernhard
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.