Advertencia de Ruby 2.0.0p0 IRB: "DL está en desuso, utilice Fiddle"


196

Simplemente desinstalé mis versiones anteriores de Ruby, eliminé todas mis gemas (incluyendo Rails) e instalé Ruby 2.0. En otras palabras, una reinstalación totalmente limpia. Al iniciar IRB, recibí este mensaje:

DL está en desuso, utilice Fiddle

Nota: estoy en una máquina con Windows.

¿Qué significa este mensaje?


2
¿Cuáles son los contenidos de su ~/.irbrcarchivo?
Todd A. Jacobs el

2
Disculpe mi ignorancia, pero ¿dónde puedo encontrar este archivo?
fbonetti

1
@CodeGnome Observe que @effbot está en una máquina con Windows. Por lo que puedo ver, Windows no tiene un .irbrcpor defecto.
Charles Caldwell

2
Lo warnque está obteniendo proviene del archivo "Ruby200 \ lib \ ruby ​​\ 2.0.0 \ dl.rb". Lo entiendo también cuando inicio irbo pry.
Charles Caldwell

14
Este es un mensaje tan mal escrito. ¿Qué es DL? ¿Qué es el violín? ¿Por qué debería cambiar? Como puedo cambiar?
Coronel Panic

Respuestas:


208

El mensaje que recibió es común cuando tiene ruby 2.0.0p0 (2013-02-24) encima de Windows .

El mensaje "DL is deprecated, please use Fiddle " no es un error; Es solo una advertencia .

La fuente es el aviso de desuso para DL introducido hace algún tiempo endl.rb (ver revisiones / 37910 ).

En Windows, el lib/ruby/site_ruby/2.0.0/readline.rbarchivo aún requiere, dl.rbpor lo que el mensaje de advertencia aparece cuandorequire 'irb' (porque irb lo requiere 'readline') o cuando cualquier otra cosa lo desea require 'readline'.

Tu puedes abrir readline.rb con su editor de texto favorito y buscar el código (cerca de la línea 4369):

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

Siempre podemos esperar una mejora para resolver esta depreciación en futuras versiones de Ruby .

EDITAR: Para aquellos que quieran profundizar en Fiddle vs DL , digamos que su propósito es vincular dinámicamente bibliotecas externas con Ruby; puedes leer en el sitio web de ruby-doc sobre DL o Fiddle .


@webRat Solo reedita la publicación; Estoy de acuerdo con usted, el rbrealine.rb fue introducido por una edición incorrecta (supongo) por comunidad. ¡Gracias por tu atención!
Franco Rondini

1
Todo esto suena tan insatisfactorio. De todos modos, tomando nota del comentario a continuación de Msangle, "¿Qué es el violín?"
será el

1
@Paul, en las dos últimas líneas de la respuesta hay dos enlaces que tal vez no has 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
En mi máquina Windows, encontré estos archivos rbreadline.rby readline.rben C:\RailsInstaller\Ruby2.1.0\lib\ruby\site_ruby\2.1.0\ . Cambié la línea de require 'dl'a require 'fiddle'. No más advertencias.
Blairg23

1
Esto no funciona ya que hay dependencias en el futuro, me temo, @ Blairg23
Martin Greenaway

74

Es posible que desee comentar el DL is deprecated, please use Fiddle advertencia en

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

ya que es molesto y no eres el dueño del código de gemas


3
Si recibe este error cuando se ejecuta vagrant upen Windows, puede encontrar este archivo en C:\vagrant\embedded\lib\ruby\2.0.0dl.rb.
sjy

1
Gracias @syj, la mía se encuentran enC:\HashiCorp\Vagrant\embedded\lib\ruby\2.0.0\dl.rb
MPes

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

3

Tengo esta resolución en openshift.com .

Resolución:

Este error ocurre solo en máquinas Windows con la versión Ruby 2.0.0. Hasta que admitamos oficialmente Ruby 2.0, cambie a Ruby 1.9.

En Windows, puede instalar Ruby 1.9.3 junto con 2.0. Cambia tu% PATH% a c:\ruby193\cualquier directorio que hayas instalado antes de instalar la gema.


¿Podrías además dar un enlace a la solución en openshift.com?
Alexander Vogt

¿Hay algún plan para apoyar oficialmente ruby ​​2.0 en un futuro muy cercano?
Bernhard

@AlexanderVogt Ahora se hace referencia a la solución. Vea mi edición arriba.
Rod Argumedo

3

El mensaje "DL está en desuso, utilice Fiddle" no es un error; Es solo una advertencia.
Solución:
puede ignorar esto en 3 simples pasos.
Paso 1. Ir a C: \ RailsInstaller \ Ruby2.1.0 \ lib \ ruby ​​\ 2.1.0
Paso 2. Luego busque dl.rb y abra el archivo con cualquier editor en línea como Aptana, texto sublime, etc.
Paso 3. Comente la línea 8 con '#' es decir, # warn "DL está en desuso, utilice Fiddle".
Eso es todo, gracias.


2

Me encontré con esto yo mismo cuando quería hacer un comando thor en Windows.

Para evitar que se muestre ese mensaje cada vez que ejecuté mi aplicación thor, silencié temporalmente las advertencias mientras cargaba thor:

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

Eso me salvó de tener que editar archivos fuente de terceros.


Solución genial, no requiere cambios en el código de otras personas.
Bernhard
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.