Ruby 2.0.0p0 IRB-Warnung: "DL ist veraltet, bitte benutze Fiddle"

196

Ich habe gerade meine älteren Versionen von Ruby deinstalliert, alle meine Edelsteine ​​(einschließlich Rails) entfernt und Ruby 2.0 installiert. Mit anderen Worten, eine völlig saubere Neuinstallation. Beim Starten von IRB erhielt ich folgende Nachricht:

DL ist veraltet, bitte benutze Fiddle

Hinweis: Ich bin auf einem Windows-Computer.

Was bedeutet diese Nachricht?

fbonetti
quelle
2
Was ist der Inhalt Ihrer ~/.irbrcDatei?
Todd A. Jacobs
2
Verzeihen Sie meine Unwissenheit, aber wo kann ich diese Datei finden?
Fbonetti
1
@CodeGnome Beachten Sie, dass sich @effbot auf einem Windows-Computer befindet. Soweit ich sehen kann, hat Windows .irbrcstandardmäßig keine .
Charles Caldwell
2
Das, was warnSie erhalten, stammt aus der Datei "Ruby200 \ lib \ ruby ​​\ 2.0.0 \ dl.rb". Ich bekomme es auch, wenn ich entweder irboder anfange pry.
Charles Caldwell
14
Dies ist so eine schlecht geschriebene Nachricht. Was ist DL? Was ist Geige? Warum sollte ich mich ändern? Wie kann ich mich ändern?
Colonel Panic

Antworten:

208

Die Nachricht , die Sie empfangen ist üblich , wenn Sie ruby 2.0.0p0 (2013-02-24)auf dem Windows - .

Die Meldung " DL is deprecated, please use Fiddle" ist kein Fehler. Es ist nur eine Warnung .

Die Quelle ist die vor einiger Zeit eingeführte Abschreibungsmitteilung für DLdl.rb (siehe Revisionen / 37910 ).

Unter Windows benötigt die lib/ruby/site_ruby/2.0.0/readline.rbDatei weiterhin, dl.rbsodass die Warnmeldung ausgegeben wird, wenn Sie require 'irb'(weil irb dies erfordert 'readline') oder wenn etwas anderes dies wünscht require 'readline'.

Sie können readline.rbmit Ihrem bevorzugten Texteditor öffnen und den Code nachschlagen (in der Nähe von Zeile 4369):

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

Wir können immer auf eine Verbesserung hoffen, um diese Ablehnung in zukünftigen Versionen von Ruby auszugleichen .

EDIT: Für diejenigen, die tiefer in Fiddle vs DL einsteigen möchten , sei gesagt, dass ihr Zweck darin besteht, externe Bibliotheken dynamisch mit Ruby zu verknüpfen. Sie können auf der Ruby-Doc-Website über DL oder Fiddle lesen .

Franco Rondini
quelle
@webRat Bearbeiten Sie den Beitrag einfach erneut. Ich stimme Ihnen zu, die rbrealine.rb wurde durch eine falsche (ich nehme an) Bearbeitung durch die Community eingeführt. Danke für Ihre Aufmerksamkeit!
Franco Rondini
1
Das klingt alles so unbefriedigend. Wie auch immer, ich nehme den Kommentar von Msangle zur Kenntnis: "Was ist Geige?"
wird
1
@Paul, in den letzten beiden Zeilen der Antwort gibt es zwei Links, die Sie vielleicht nicht gesehen haben: 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
Auf meinem Windows-Computer habe ich diese Dateien gefunden rbreadline.rbund readline.rbbei C:\RailsInstaller\Ruby2.1.0\lib\ruby\site_ruby\2.1.0\ . Ich habe die Zeile von require 'dl'nach geändert require 'fiddle'. Keine Warnungen mehr.
Blairg23
1
Dies funktioniert nicht, da es auf der ganzen Linie Abhängigkeiten gibt, fürchte ich, @ Blairg23
Martin Greenaway
74

Möglicherweise möchten Sie die DL is deprecated, please use FiddleWarnung unter auskommentieren

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

da es nervig ist und du nicht der irb / pry oder irgendein anderer gems code besitzer bist

Erwin Kaddy
quelle
3
Wenn Sie diesen Fehler unter vagrant upWindows erhalten, finden Sie diese Datei unter C:\vagrant\embedded\lib\ruby\2.0.0dl.rb.
Sjy
1
Danke @syj, meine befand sich amC:\HashiCorp\Vagrant\embedded\lib\ruby\2.0.0\dl.rb
mpen
C: \ RailsInstaller \ Ruby2.1.0 \ lib \ ruby ​​\ 2.1.0 \ dl.rb Zeile 8
Sunil BN
3

Ich habe diese Auflösung bei openshift.com erhalten .

Auflösung:

Dieser Fehler tritt nur auf Windows-Computern mit Ruby 2.0.0-Version auf. Bis wir Ruby 2.0 offiziell unterstützen, führen Sie bitte ein Downgrade auf Ruby 1.9 durch.

Unter Windows können Sie Ruby 1.9.3 neben 2.0 installieren. Ändern Sie Ihren% PATH% in ein c:\ruby193\beliebiges Verzeichnis, in das Sie vor der Installation des Gems installiert haben.

Gaurav
quelle
Könnten Sie zusätzlich einen Link zur Lösung auf openshift.com geben?
Alexander Vogt
Gibt es Pläne, Ruby 2.0 in naher Zukunft offiziell zu unterstützen?
Bernhard
@AlexanderVogt Auf die Lösung wird jetzt verwiesen. Siehe meine Bearbeitung oben.
Rod Argumedo
3

Die Meldung "DL ist veraltet, bitte Fiddle verwenden" ist kein Fehler. Es ist nur eine Warnung.
Lösung:
Sie können dies in 3 einfachen Schritten ignorieren.
Schritt 1. Gehen Sie zu C: \ RailsInstaller \ Ruby2.1.0 \ lib \ ruby ​​\ 2.1.0.
Schritt 2. Suchen Sie dann dl.rb und öffnen Sie die Datei mit allen Online-Editoren wie Aptana, erhabenem Text usw.
Schritt 3. Kommentieren Sie die Zeile 8 mit '#' dh # warn "DL ist veraltet, bitte benutze Fiddle".
Das war's, danke.

Arun Atluri
quelle
2

Ich bin selbst darauf gestoßen, als ich unter Windows einen Thor-Befehl ausführen wollte.

Um zu vermeiden, dass diese Nachricht jedes Mal ausgegeben wird, wenn ich meine thor-Anwendung ausführe, habe ich beim Laden von thor vorübergehend Warnungen stummgeschaltet:

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

Das ersparte mir, Quelldateien von Drittanbietern bearbeiten zu müssen.

thomthom
quelle
coole Lösung, es erfordert keine Änderungen im Code anderer Leute.
Bernhard