Aviso do IRB do Ruby 2.0.0p0: “A DL está obsoleta, use o Fiddle”

196

Acabei de desinstalar minhas versões mais antigas do Ruby, removi todas as minhas jóias (incluindo Rails) e instalei o Ruby 2.0. Em outras palavras, uma reinstalação totalmente limpa. Ao iniciar o IRB, recebi esta mensagem:

DL está descontinuado, use o Fiddle

Nota: estou em uma máquina Windows.

O que essa mensagem significa?

fbonetti
fonte
2
Qual é o conteúdo do seu ~/.irbrcarquivo?
Todd A. Jacobs
2
Perdoe minha ignorância, mas onde posso localizar esse arquivo?
Fbonetti 23/03
1
@CodeGnome Observe que @effbot está em uma máquina Windows. Pelo que posso ver, o Windows não possui um .irbrcpor padrão.
Charles Caldwell
2
O que warnvocê está recebendo é proveniente do arquivo "Ruby200 \ lib \ ruby ​​\ 2.0.0 \ dl.rb". Eu também entendo quando inicio um irbou outro pry.
Charles Caldwell
14
Esta é uma mensagem muito mal escrita. O que é DL? O que é Fiddle? Por que eu deveria mudar? Como posso mudar?
Coronel Panic

Respostas:

208

A mensagem que você recebeu é comum quando você está ruby 2.0.0p0 (2013-02-24)em cima do Windows .

A mensagem " DL is deprecated, please use Fiddle" não é um erro; é apenas um aviso .

A fonte é o aviso de descontinuação para DL introduzido há algum tempo em dl.rb(consulte as revisões / 37910 ).

No Windows, o lib/ruby/site_ruby/2.0.0/readline.rbarquivo ainda exige dl.rbque a mensagem de aviso seja exibida quando você require 'irb'(porque o irb exige 'readline') ou quando qualquer outra coisa desejar require 'readline'.

Você pode abrir readline.rbcom o seu editor de texto favorito e procurar o código (perto da linha 4369):

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

Sempre podemos esperar uma melhoria para resolver essa depreciação em versões futuras do Ruby .

EDIT: Para aqueles que desejam aprofundar o Fiddle vs DL , diga-se que o objetivo deles é vincular dinamicamente bibliotecas externas ao Ruby; você pode ler no site do ruby-doc sobre DL ou Fiddle .

Franco Rondini
fonte
@webRat Apenas reedite a postagem; Concordo com você, o rbrealine.rb foi introduzido por um Edit errado (suponho) por comunidade. Agradecimentos para sua atenção!
Franco Rondini
1
Tudo isso parece tão insatisfatório. De qualquer forma, tomando nota do comentário abaixo de Msangle, "O que é violino?"
vai
1
@Paul, nas duas últimas linhas da resposta há dois links que talvez você ainda não tenha 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
Na minha máquina Windows, localizei esses arquivos rbreadline.rbe readline.rbem C:\RailsInstaller\Ruby2.1.0\lib\ruby\site_ruby\2.1.0\ . Eu mudei a linha de require 'dl'para require 'fiddle'. Não há mais avisos.
Blairg23
1
Isso não funciona, pois há dependências para baixo da linha, eu tenho medo, @ Blairg23
Martin Greenaway
74

Você pode comentar o DL is deprecated, please use Fiddleaviso em

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

já que é chato e você não é o proprietário do irb / bisbilhoteiro ou de outros gems

Erwin Kaddy
fonte
3
Se você estiver recebendo esse erro ao executar vagrant upno Windows, esse arquivo pode ser encontrado em C:\vagrant\embedded\lib\ruby\2.0.0dl.rb.
SJY
1
Graças @syj, mina foi localizado naC:\HashiCorp\Vagrant\embedded\lib\ruby\2.0.0\dl.rb
MPEN
C: \ RailsInstaller \ Ruby2.1.0 \ lib \ ruby ​​\ 2.1.0 \ dl.rb linha 8
Sunil BN
3

Eu tenho essa resolução em openshift.com .

Resolução:

Este erro ocorre apenas na máquina Windows com a versão Ruby 2.0.0. Até que oficialmente ofereçamos suporte ao Ruby 2.0, faça o downgrade para o Ruby 1.9.

No Windows, você pode instalar o Ruby 1.9.3 ao lado do 2.0. Mude seu% PATH% para c:\ruby193\o diretório que você instalou antes de instalar o gem.

Gaurav
fonte
Você também poderia fornecer um link para a solução em openshift.com?
Alexander Vogt
Existe algum plano para apoiar oficialmente o ruby ​​2.0 em um futuro muito próximo?
21415 Bernhard
@AlexanderVogt A solução agora é referenciada. Veja minha edição acima.
Rod Argumedo
3

A mensagem "DL está obsoleta, use o Fiddle" não é um erro; é apenas um aviso.
Solução:
você pode ignorar isso em 3 etapas simples.
Etapa 1. Vá para C: \ RailsInstaller \ Ruby2.1.0 \ lib \ ruby ​​\ 2.1.0
Etapa 2. Em seguida, encontre o dl.rb e abra o arquivo com qualquer editor online como Aptana, texto sublime etc.
Etapa 3. Comente a linha 8 com '#' ie # warn "A DL está obsoleta, por favor use o Fiddle".
É isso, obrigado.

Arun Atluri
fonte
2

Eu me deparei com isso quando queria fazer um comando thor no Windows.

Para evitar que essa mensagem seja exibida toda vez que eu executei meu aplicativo thor, mudei temporariamente os avisos ao carregar o thor:

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

Isso me salvou de ter que editar arquivos de origem de terceiros.

thomthom
fonte
solução legal, não requer alterações no código de outras pessoas.
Bernhard