Cảnh báo IRB của Ruby 2.0.0p0: DL DL không được dùng nữa, vui lòng sử dụng Fiddle INTERN


196

Tôi vừa gỡ cài đặt các phiên bản cũ hơn của Ruby, loại bỏ tất cả các viên đá quý của tôi (bao gồm cả Rails) và cài đặt Ruby 2.0. Nói cách khác, cài đặt lại hoàn toàn sạch sẽ. Khi bắt đầu IRB, tôi nhận được tin nhắn này:

DL không được dùng nữa, vui lòng sử dụng Fiddle

Lưu ý: Tôi đang dùng máy Windows.

Thông điệp này có ý nghĩa gì?


2
Nội dung của ~/.irbrctập tin của bạn là gì?
Todd A. Jacobs

2
Xin tha thứ cho sự thiếu hiểu biết của tôi, nhưng tôi có thể định vị tệp này ở đâu?
fbonetti

1
@CodeGnome Lưu ý rằng @effbot nằm trên máy Windows. Từ những gì tôi có thể thấy, Windows không có .irbrcmặc định.
Charles Caldwell

2
Các warnbạn đang nhận được đến từ tệp "Ruby200 \ lib \ ruby ​​\ 2.0.0 \ dl.rb". Tôi cũng nhận được nó khi tôi bắt đầu irbhoặc pry.
Charles Caldwell

14
Đây là một thông điệp bằng văn bản xấu. DL là gì? Fiddle là gì? Tại sao tôi phải thay đổi? Làm thế nào tôi có thể thay đổi?
Đại tá Panic

Câu trả lời:


208

Thông báo bạn nhận được là phổ biến khi bạn có ruby 2.0.0p0 (2013-02-24)trên Windows .

Thông báo " DL is deprecated, please use Fiddle" không phải là một lỗi; nó chỉ là một cảnh báo .

Nguồn là thông báo Khấu hao cho DL được giới thiệu cách đây một thời gian trước dl.rb(xem bản sửa đổi / 37910 ).

Trên Windows các lib/ruby/site_ruby/2.0.0/readline.rbtập tin vẫn đòi hỏi dl.rbnhư vậy thông điệp cảnh báo đi ra khi bạn require 'irb'(vì IRB đòi hỏi 'readline') hoặc khi bất cứ điều gì khác muốn require 'readline'.

Bạn có thể mở readline.rbbằng trình soạn thảo văn bản yêu thích của mình và tra cứu mã (gần dòng 4369):

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

Chúng ta luôn có thể hy vọng một sự cải tiến để giải quyết sự phản đối này trong các phiên bản tương lai của Ruby .

EDIT: Đối với những người muốn tìm hiểu sâu hơn về Fiddle vs DL , hãy nói rằng mục đích của họ là liên kết động các thư viện bên ngoài với Ruby; bạn có thể đọc trên trang web ruby-doc về DL hoặc Fiddle .


@webRat Chỉ cần chỉnh sửa lại bài đăng; Tôi đồng ý với bạn, rbrealine.rb đã được giới thiệu bởi một sai (tôi cho là) ​​Chỉnh sửa bởi cộng đồng. Cảm ơn đã quan tâm!
Franco Rondini

1
Tất cả điều này nghe có vẻ không đạt yêu cầu. Dù sao, ghi chú của bình luận bên dưới từ Msangle, "Fiddle là gì?"
sẽ

1
@Paul, ở hai dòng cuối của câu trả lời có hai liên kết mà có thể bạn chưa thấy: 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
Trên máy Windows của tôi, tôi tìm tệp này rbreadline.rbreadline.rbtại C:\RailsInstaller\Ruby2.1.0\lib\ruby\site_ruby\2.1.0\ . Tôi đã thay đổi dòng từ require 'dl'đến require 'fiddle'. Không còn cảnh báo.
Blairg23

1
Điều này không hoạt động vì có sự phụ thuộc ở tuyến dưới, tôi sợ, @ Blairg23
Martin Greenaway

74

Bạn có thể muốn bình luận DL is deprecated, please use Fiddlecảnh báo tại

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

vì nó gây phiền nhiễu và bạn không phải là irb / pry hoặc một số chủ sở hữu mã đá quý khác


3
Nếu bạn gặp lỗi này khi chạy vagrant uptrên Windows, tập tin này có thể được tìm thấy tại C:\vagrant\embedded\lib\ruby\2.0.0dl.rb.
sjy

1
Cảm ơn @syj, của tôi đã được đặt tạiC:\HashiCorp\Vagrant\embedded\lib\ruby\2.0.0\dl.rb
mpen

C: \ RailsInstaller \ Ruby2.1.0 \ lib \ ruby ​​\ 2.1.0 \ dl.rb dòng 8
Sunil BN

3

Tôi đã nhận được giải pháp này tại openshift.com .

Nghị quyết:

Lỗi này chỉ xảy ra trên máy Windows với phiên bản Ruby 2.0.0. Cho đến khi chúng tôi chính thức hỗ trợ Ruby 2.0, vui lòng hạ cấp xuống Ruby 1.9.

Trên Windows, bạn có thể cài đặt Ruby 1.9.3 cùng với 2.0. Thay đổi% PATH% của bạn thành c:\ruby193\hoặc bất kỳ thư mục nào bạn đã cài đặt trước khi cài đặt đá quý.


Bạn có thể cung cấp thêm một liên kết đến giải pháp trên openshift.com không?
Alexander Vogt

Có kế hoạch nào để chính thức hỗ trợ ruby ​​2.0 trong tương lai rất gần không?
Bernhard

@AlexanderVogt Giải pháp hiện được tham khảo. Xem chỉnh sửa của tôi ở trên.
Rod Argumedo

3

Thông báo "DL không được chấp nhận, vui lòng sử dụng Fiddle" không phải là một lỗi; nó chỉ là một cảnh báo.
Giải pháp:
Bạn có thể bỏ qua điều này trong 3 bước đơn giản.
Bước 1. Goto C: \ RailsInstaller \ Ruby2.1.0 \ lib \ ruby ​​\ 2.1.0
Bước 2. Sau đó tìm dl.rb và mở tệp với bất kỳ trình soạn thảo trực tuyến nào như Aptana, văn bản thăng hoa, v.v ...
Bước 3. Nhận xét dòng 8 với '#' tức là # cảnh báo "DL không được dùng nữa, vui lòng sử dụng Fiddle".
Đó là nó, Cảm ơn bạn.


2

Tôi đã gặp phải điều này khi tôi muốn thực hiện một lệnh thor trong Windows.

Để tránh việc có thông báo đầu ra mỗi lần tôi chạy ứng dụng thor của mình, tôi tạm thời tắt tiếng cảnh báo trong khi tải thor:

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

Điều đó đã cứu tôi khỏi phải chỉnh sửa các tệp nguồn của bên thứ ba.


giải pháp tuyệt vời, nó không yêu cầu thay đổi mã của người khác.
Bernhard
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.