Ruby 2.0.0p0 IRB警告:“ DL已弃用,请使用Fiddle”


196

我只是卸载了旧版本的Ruby,删除了所有的gem(包括Rails),并安装了Ruby 2.0。换句话说,完全干净的重新安装。启动IRB后,我收到了以下消息:

DL已弃用,请使用Fiddle

注意:我在Windows计算机上。

此消息是什么意思?


2
~/.irbrc文件的内容是什么?
Todd A. Jacobs 2013年

2
请原谅我的无知,但在哪里可以找到此文件?
fbonetti

1
@CodeGnome注意@effbot在Windows计算机上。从我可以看到,Windows .irbrc默认情况下没有。
Charles Caldwell

2
warn你正在从文件“Ruby200 \ LIB \红宝石\ 2.0.0 \ dl.rb”的到来。当我启动irb或时,我也会得到它pry
Charles Caldwell

14
这是一封写得不好的消息。什么是DL?小提琴是什么?我为什么要换?我该如何改变?
上校惊慌

Answers:


208

您收到的邮件是常见的,当你有ruby 2.0.0p0 (2013-02-24)之上的Windows

消息“ DL is deprecated, please use Fiddle不是错误;这只是一个警告

来源是前一段时间在DL中引入的DL弃用通知dl.rb(请参阅修订号/ 37910)。

在Windows上,该lib/ruby/site_ruby/2.0.0/readline.rb文件仍然是必需的,dl.rb因此当您(由于irb需要)或其他任何需要时,会出现警告消息require 'irb''readline'require 'readline'

您可以readline.rb使用自己喜欢的文本编辑器打开并查找代码(在第4369行附近):

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

我们始终可以希望有改进,以在将来的Ruby版本中解决此问题。

编辑:对于那些想深入了解Fiddle vs DL的人来说,可以说他们的目的是用Ruby动态链接外部库。您可以在ruby-doc网站上阅读有关DLFiddle的信息


@webRat只需重新编辑帖子;我同意您的意见,rbrealine.rb是由错误(我想)由社区编辑引入的。感谢您的关注!
佛朗哥·隆迪尼

1
这一切听起来都不尽人意。无论如何,请注意以下Msangle的评论:“什么是小提琴?”

1
@保罗,在回答的最后两行有两个链接,也许你还没有看到:ruby-doc.org/stdlib-2.0.0/libdoc/fiddle/rdoc/Fiddle.htmlruby-doc.org/ stdlib-2.0.0 / libdoc / dl / rdoc / DL.html
Franco Rondini

2
在Windows计算机上,我将此文件放在rbreadline.rb和。我将该行从更改为。没有更多警告。readline.rbC:\RailsInstaller\Ruby2.1.0\lib\ruby\site_ruby\2.1.0\ require 'dl'require 'fiddle'
Blairg23

1
这行不通,因为可能存在依赖关系,恐怕@ Blairg23
Martin Greenaway

74

您可能要在以下位置注释掉DL is deprecated, please use Fiddle警告

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

因为这很烦人,而且您不是irb / pry或其他gems代码所有者


3
如果您vagrant up在Windows上运行时遇到此错误,可以在找到此文件C:\vagrant\embedded\lib\ruby\2.0.0dl.rb
sjy 2014年

1
感谢@syj,我的位置是C:\HashiCorp\Vagrant\embedded\lib\ruby\2.0.0\dl.rb
mpen 2014年

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

3

我在openshift.com上获得了此分辨率。

解析度:

仅在具有Ruby 2.0.0版本的Windows计算机上会发生此错误。在我们正式支持Ruby 2.0之前,请降级到Ruby 1.9。

在Windows上,您可以将Ruby 1.9.3与2.0一起安装。c:\ruby193\在安装gem之前,将%PATH%更改为您安装的目录或任何目录。


您还可以在openshift.com上提供该解决方案的链接吗?
Alexander Vogt

有没有计划在不久的将来正式支持ruby 2.0?
Bernhard

@AlexanderVogt现在引用该解决方案。请参阅上面的编辑。
Rod Argumedo 2015年

3

消息“ DL已弃用,请使用Fiddle”不是错误;这只是一个警告。
解决方案:
您可以通过3个简单的步骤忽略它。
步骤1.转到C:\ RailsInstaller \ Ruby2.1.0 \ lib \ ruby​​ \ 2.1.0
步骤2.然后找到dl.rb并使用任何在线编辑器(例如Aptana,sublime text等)打开文件。
步骤3.注释第8行'#'即#警告“ DL已过时,请使用Fiddle”。
就是这样,谢谢。


2

我想在Windows下执行thor命令时遇到了这个问题。

为了避免每次运行我的应用程序时都输出该消息,我在加载时暂时将警告静音:

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

这使我不必编辑第三方源文件。


很酷的解决方案,它不需要更改其他人的代码。
伯恩哈德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.