Avertissement Ruby 2.0.0p0 IRB: «DL est déconseillé, veuillez utiliser Fiddle»

196

J'ai juste désinstallé mes anciennes versions de Ruby, supprimé toutes mes gemmes (y compris Rails) et installé Ruby 2.0. En d'autres termes, une réinstallation totalement propre. Au démarrage de l'IRB, j'ai reçu ce message:

DL est obsolète, veuillez utiliser Fiddle

Remarque: je suis sur une machine Windows.

Que signifie ce message?

fbonetti
la source
2
Quel est le contenu de votre ~/.irbrcdossier?
Todd A. Jacobs
2
Pardonnez mon ignorance, mais où puis-je trouver ce fichier?
fbonetti
1
@CodeGnome Notez que @effbot est sur une machine Windows. D'après ce que je peux voir, Windows n'a pas de .irbrcpar défaut.
Charles Caldwell
2
Le warnfichier que vous obtenez provient du fichier "Ruby200 \ lib \ ruby ​​\ 2.0.0 \ dl.rb". Je l'obtiens également lorsque je démarre soit irbou pry.
Charles Caldwell
14
C'est un message tellement mal écrit. Qu'est-ce que DL? Qu'est-ce que Fiddle? Pourquoi devrais-je changer? Comment puis-je changer?
Colonel Panic

Réponses:

208

Le message que vous avez reçu est courant lorsque vous avez ruby 2.0.0p0 (2013-02-24)au-dessus de Windows .

Le message " DL is deprecated, please use Fiddle" n'est pas une erreur; ce n'est qu'un avertissement .

La source est l' avis de dépréciation pour DL introduit il y a quelque temps dl.rb(voir révisions / 37910 ).

Sous Windows, le lib/ruby/site_ruby/2.0.0/readline.rbfichier nécessite toujours, de dl.rbsorte que le message d'avertissement s'affiche lorsque vous require 'irb'(car irb l'exige 'readline') ou lorsque quelque chose d'autre le veut require 'readline'.

Vous pouvez ouvrir readline.rbavec votre éditeur de texte préféré et rechercher le code (près de la ligne 4369):

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

Nous pouvons toujours espérer une amélioration pour résoudre cette dépréciation dans les futures versions de Ruby .

EDIT: Pour ceux qui veulent approfondir Fiddle vs DL , disons que leur but est de lier dynamiquement des bibliothèques externes avec Ruby; vous pouvez lire sur le site Web ruby-doc sur DL ou Fiddle .

Franco Rondini
la source
@webRat Il suffit de rééditer le message; Je suis d'accord avec vous, le rbrealine.rb a été introduit par un mauvais (je suppose) Edit par la communauté. Merci de votre attention!
Franco Rondini
1
Tout cela semble si insatisfaisant. Quoi qu'il en soit, en prenant note du commentaire ci-dessous de Msangle, "Qu'est-ce que le violon?"
le
1
@Paul, aux deux dernières lignes de la réponse, il y a deux liens que vous n'avez peut-être pas vus: 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
Sur ma machine Windows, j'ai localisé ces fichiers rbreadline.rbet readline.rbà C:\RailsInstaller\Ruby2.1.0\lib\ruby\site_ruby\2.1.0\ . J'ai changé la ligne de require 'dl'en require 'fiddle'. Plus d'avertissements.
Blairg23
1
Cela ne fonctionne pas car il y a des dépendances sur la ligne, je le crains, @ Blairg23
Martin Greenaway
74

Vous souhaiterez peut-être commenter l' DL is deprecated, please use Fiddleavertissement à l' adresse

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

car c'est ennuyeux et vous n'êtes pas le propriétaire du code irb / pry ou d'autres gemmes

Erwin Kaddy
la source
3
Si vous obtenez cette erreur lors de l'exécution vagrant upsous Windows, ce fichier se trouve à l'adresse C:\vagrant\embedded\lib\ruby\2.0.0dl.rb.
sjy
1
Merci @syj, la mienne était située àC:\HashiCorp\Vagrant\embedded\lib\ruby\2.0.0\dl.rb
mpen le
C: \ RailsInstaller \ Ruby2.1.0 \ lib \ ruby ​​\ 2.1.0 \ dl.rb ligne 8
Sunil BN
3

J'ai obtenu cette résolution sur openshift.com .

Résolution:

Cette erreur se produit uniquement sur la machine Windows avec la version Ruby 2.0.0. Jusqu'à ce que nous prenions officiellement en charge Ruby 2.0, veuillez passer à Ruby 1.9.

Sous Windows, vous pouvez installer Ruby 1.9.3 avec 2.0. Changez votre% PATH% en c:\ruby193\ou n'importe quel répertoire que vous avez installé avant d'installer la gemme.

Gaurav
la source
Pourriez-vous également donner un lien vers la solution sur openshift.com?
Alexander Vogt
Y a-t-il un plan pour soutenir officiellement ruby ​​2.0 dans un avenir très proche?
Bernhard
@AlexanderVogt La solution est maintenant référencée. Voir ma modification ci-dessus.
Rod Argumedo
3

Le message "DL est obsolète, veuillez utiliser Fiddle" n'est pas une erreur; ce n'est qu'un avertissement.
Solution:
vous pouvez ignorer cela en 3 étapes simples.
Étape 1. Aller à C: \ RailsInstaller \ Ruby2.1.0 \ lib \ ruby ​​\ 2.1.0
Étape 2. Ensuite, trouvez dl.rb et ouvrez le fichier avec tous les éditeurs en ligne comme Aptana, texte sublime, etc.
Étape 3. Commentez la ligne 8 avec '#' ie # warn "DL est obsolète, veuillez utiliser Fiddle".
Voilà, merci.

Arun Atluri
la source
2

Je l'ai rencontré moi-même lorsque je voulais faire une commande thor sous Windows.

Pour éviter d'avoir ce message à chaque fois que j'ai exécuté mon application thor, j'ai temporairement désactivé les avertissements lors du chargement de thor:

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

Cela m'a évité de devoir modifier des fichiers sources tiers.

thomthom
la source
solution cool, il ne nécessite pas de changements dans le code des autres.
Bernhard