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 Fiddlenie 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.