2013-03-23 9 views
196

Ho appena disinstallato le mie vecchie versioni di Ruby, rimosso tutte le mie gemme (inclusi Rails) e installato Ruby 2.0. In altre parole, una reinstallazione completamente pulita. All'inizio di IRB, ho ricevuto questo messaggio:Ruby 2.0.0p0 avviso IRB: "DL è deprecato, si prega di utilizzare Fiddle"

 
DL is deprecated, please use Fiddle 

Nota: Sono su una macchina Windows.

Cosa significa questo messaggio?

+2

Quali sono i contenuti del file '~/.irbrc'? –

+2

Perdonami la mia ignoranza, ma dove posso trovare questo file? – fbonetti

+1

@CodeGnome Si noti che @effbot si trova su un computer Windows. Da quello che posso vedere, Windows non ha un '.irbrc' di default. –

risposta

208

Il messaggio che hai ricevuto è comune quando si ha ruby 2.0.0p0 (2013-02-24) in cima di Windows.

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

La sorgente è la Deprecation notice for DL introdotta qualche tempo fa in dl.rb (vedere revisions/37910).

Su Windows il file lib/ruby/site_ruby/2.0.0/readline.rb richiede ancora dl.rb in modo che il messaggio di avvertimento viene fuori quando si require 'irb' (perché IRB richiede 'readline') o quando qualsiasi altra cosa vuole require 'readline'.

È possibile aprire readline.rb con il vostro editor di testo preferito e cercare il codice (vicino alla linea 4369):

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

sempre Possiamo sperare in un miglioramento per risolvere questo disapprovazione nelle prossime versioni di Ruby.

EDIT: Per coloro che vogliono andare più a fondo su Fiddle vs DL, sia detto che il loro scopo è quello di collegare dinamicamente librerie esterne con Ruby; puoi leggere sul sito web ruby-doc a proposito di DL o Fiddle.

+1

A partire da ruby ​​2.0.0p247 - rbreadline.rb non esiste. – webRat

+0

@webRat Basta modificare nuovamente il post; Sono d'accordo con te, il rbrealine.rb è stato introdotto da un errore (suppongo) Modifica per comunità. Grazie per l'attenzione! –

+1

Tutto questo sembra così insoddisfacente. Ad ogni modo, prendendo nota del commento qui sotto di Msangle, "What is fiddle?" – will

73

Si consiglia di commentare l'avviso DL is deprecated, please use Fiddle a

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

dal momento che è fastidioso e non sei l'IRB/leva o qualche altro responsabile del codice gemme

+3

Se si verifica questo errore durante l'esecuzione ' vagrant up' su Windows, questo file può essere trovato in 'C: \ vagrant \ embedded \ lib \ ruby ​​\ 2.0.0dl.rb'. – sjy

+1

Grazie a @syj, il mio si trovava in 'C: \ HashiCorp \ Vagrant \ embedded \ lib \ ruby ​​\ 2.0.0 \ dl.rb' – mpen

+0

@Mark grazie - quel percorso è dove ho trovato il mio file' dl.rb'. – bonesbrigade

3

ho avuto presente risoluzione al openshift.com.

Risoluzione:

Questo errore si verifica solo sulla macchina Windows con Ruby 2.0.0 versione. Fino al supporto ufficiale di Ruby 2.0, effettuare il downgrade a Ruby 1.9.

Su Windows, è possibile installare Ruby 1.9.3 insieme a 2.0. Cambia il tuo PERCORSO % su c:\ruby193\ o qualsiasi altra directory installata prima del per installare la gemma.

+0

Potrebbe inoltre fornire un collegamento alla soluzione su openshift.com? –

+0

C'è qualche piano per supportare ufficialmente Ruby 2.0 nel prossimo futuro? – Bernhard

+0

@AlexanderVogt La soluzione è ora referenziata. Vedi la mia modifica sopra. –

3

Il messaggio "DL è deprecato, si prega di utilizzare Fiddle" non è un errore; è solo un avvertimento.
Soluzione:
È possibile ignorare questo in 3 semplici passaggi.
Fase 1. Vai a C: \ RailsInstaller \ Ruby2.1.0 \ lib \ ruby ​​\ 2.1.0
Fase 2. Poi trovare dl.rb e aprire il file con qualsiasi editor online come Aptana, sublime ecc testo
Fase 3 Commenta la riga 8 con '#' cioè # warn "DL è deprecato, per favore usa Fiddle".
Ecco, grazie.

2

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

per evitare di dover ogni volta che in uscita messaggio Ho corso la mia domanda Thor I avvertimenti temporaneamente in sordina durante il caricamento di Thor:

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

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

+0

soluzione cool, non richiede modifiche nel codice di altre persone. – Bernhard

Problemi correlati