Ruby 2.0.0p0 Avviso IRB: "DL è obsoleto, si prega di utilizzare Fiddle"


196

Ho appena disinstallato le mie versioni precedenti di Ruby, rimosso tutte le mie gemme (incluso Rails) e installato Ruby 2.0. In altre parole, una reinstallazione totalmente pulita. All'avvio di IRB, ho ricevuto questo messaggio:

DL è obsoleto, per favore usa Fiddle

Nota: sono su un computer Windows.

Cosa significa questo messaggio?


2
Quali sono i contenuti del tuo ~/.irbrcfile?
Todd A. Jacobs,

2
Perdonate la mia ignoranza, ma dove posso trovare questo file?
fbonetti,

1
@CodeGnome Nota che @effbot si trova su un computer Windows. Da quello che posso vedere, Windows non ha un .irbrcvalore predefinito.
Charles Caldwell,

2
Quello warnche stai ricevendo proviene dal file "Ruby200 \ lib \ ruby ​​\ 2.0.0 \ dl.rb". Lo capisco anche quando avvio irbo pry.
Charles Caldwell,

14
Questo è un messaggio scritto così male. Che cos'è DL? Che cos'è il violino? Perché dovrei cambiare? Come posso cambiare?
Colonnello Panic,

Risposte:


208

Il messaggio che hai ricevuto è comune quando hai ruby 2.0.0p0 (2013-02-24)sopra Windows .

Il messaggio " DL is deprecated, please use Fiddle" non è un errore; è solo un avvertimento .

La fonte è l' avviso di deprecazione per DL introdotto qualche tempo fa in dl.rb(vedi revisioni / 37910 ).

Su Windows il lib/ruby/site_ruby/2.0.0/readline.rbfile richiede ancora, dl.rbquindi il messaggio di avviso viene visualizzato quando require 'irb'(perché irb lo richiede 'readline') o quando lo si desidera require 'readline'.

Puoi aprire readline.rbcon il tuo editor di testo preferito e cercare il codice (vicino alla riga 4369):

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

Possiamo sempre sperare in un miglioramento per risolvere questa deprecazione nelle versioni future di Ruby .

EDIT: Per coloro che vogliono approfondire Fiddle vs DL , si può dire che il loro scopo è quello di collegare dinamicamente le librerie esterne con Ruby; puoi leggere sul sito Web ruby-doc su DL o Fiddle .


@webRat Basta modificare nuovamente il post; Sono d'accordo con te, rbrealine.rb è stato introdotto da una modifica errata (suppongo) da parte della comunità. Grazie per l'attenzione!
Franco Rondini,

1
Tutto ciò sembra così insoddisfacente. Ad ogni modo, prendendo nota del commento qui sotto di Msangle, "Cos'è il violino?"
sarà il

1
@Paul, nelle ultime due righe della risposta ci sono due link che forse non hai visto: 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
Sul mio computer Windows, ho trovato questi file rbreadline.rbe readline.rbsu C:\RailsInstaller\Ruby2.1.0\lib\ruby\site_ruby\2.1.0\ . Ho cambiato la linea da require 'dl'a require 'fiddle'. Niente più avvisi.
Blairg23,

1
Questo non funziona perché ci sono dipendenze lungo la linea, temo, @ Blairg23
Martin Greenaway

74

Potresti voler commentare l' DL is deprecated, please use Fiddleavviso all'indirizzo

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

dal momento che è fastidioso e non sei il proprietario del codice IRB / PRY o di altre gemme


3
Se viene visualizzato questo errore durante l'esecuzione vagrant upsu Windows, questo file è disponibile all'indirizzo C:\vagrant\embedded\lib\ruby\2.0.0dl.rb.
sjy

1
Grazie @syj, il mio era situato aC:\HashiCorp\Vagrant\embedded\lib\ruby\2.0.0\dl.rb
mpen

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

3

Ho ottenuto questa risoluzione su openshift.com .

Risoluzione:

Questo errore si verifica solo su macchine Windows con versione Ruby 2.0.0. Fino a quando non supporteremo ufficialmente Ruby 2.0, eseguire il downgrade a Ruby 1.9.

Su Windows, puoi installare Ruby 1.9.3 insieme a 2.0. Cambia% PATH% c:\ruby193\o in qualunque directory tu abbia installato prima di installare gem.


Potresti inoltre fornire un link alla soluzione su openshift.com?
Alexander Vogt,

C'è un piano per supportare ufficialmente ruby ​​2.0 in un futuro molto prossimo?
Bernhard,

@AlexanderVogt La soluzione è ora referenziata. Vedi la mia modifica sopra.
Rod Argumedo,

3

Il messaggio "DL è obsoleto, utilizza Fiddle" non è un errore; è solo un avvertimento.
Soluzione:
puoi ignorarlo in 3 semplici passaggi.
Passaggio 1. Vai a C: \ RailsInstaller \ Ruby2.1.0 \ lib \ ruby ​​\ 2.1.0
Passaggio 2. Quindi trova dl.rb e apri il file con qualsiasi editor online come Aptana, testo sublime ecc.
Passaggio 3. Commenta la riga 8 con '#' cioè # avvisa "DL è deprecato, per favore usa Fiddle".
Grazie, grazie.


2

Mi sono imbattuto in questo me stesso quando volevo fare un comando thor sotto Windows.

Per evitare che quel messaggio venisse emesso ogni volta che eseguivo la mia applicazione, ho temporaneamente disattivato gli avvisi durante il caricamento di thor:

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

Ciò mi ha salvato dal dover modificare i file di origine di terze parti.


soluzione interessante, non richiede modifiche nel codice di altre persone.
Bernhard
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.