Ruby 2.0.0p0 คำเตือน IRB:“ DL เลิกใช้แล้ว, โปรดใช้ Fiddle”


196

ฉันเพิ่งถอนการติดตั้ง Ruby เวอร์ชั่นเก่าลบพลอยทั้งหมด (รวมถึง Rails) และติดตั้ง Ruby 2.0 ในคำอื่น ๆ ทำความสะอาดใหม่ทั้งหมดติดตั้ง เมื่อเริ่ม IRB ฉันได้รับข้อความนี้:

เลิกใช้แล้วโปรดใช้ซอ

หมายเหตุ: ฉันใช้เครื่อง Windows

ข้อความนี้หมายความว่าอย่างไร


2
~/.irbrcไฟล์ของคุณมีเนื้อหาอะไรบ้าง?
Todd A. Jacobs

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 คืออะไร ซอคืออะไร? ทำไมฉันต้องเปลี่ยน ฉันจะเปลี่ยนอย่างไร
พันเอก Panic

คำตอบ:


208

ข้อความที่คุณได้รับเป็นเรื่องธรรมดาเมื่อคุณมีruby 2.0.0p0 (2013-02-24)ด้านบนของวินโดวส์

ข้อความ " DL is deprecated, please use Fiddle" ไม่ใช่ข้อผิดพลาด เป็นเพียงการแจ้งเตือน

แหล่งที่มาคือการแจ้งการเลิกใช้งานสำหรับ DL ที่นำมาใช้เมื่อนานมาแล้วในdl.rb(ดูการแก้ไข / 37910 )

หน้าต่างlib/ruby/site_ruby/2.0.0/readline.rbไฟล์ยังคงต้องdl.rbดังนั้นข้อความแจ้งเตือนออกมาเมื่อคุณrequire 'irb'(เพราะต้อง IRB 'readline') require 'readline'หรือเมื่อสิ่งอื่นที่ต้องการ

คุณสามารถเปิดreadline.rbด้วยโปรแกรมแก้ไขข้อความที่คุณชื่นชอบและค้นหารหัส (ใกล้กับบรรทัด 4369):

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

เรามักจะสามารถหวังสำหรับการปรับปรุงเพื่อให้ผลงานออกมาคัดค้านนี้ในรุ่นอนาคตของทับทิม

แก้ไข: สำหรับผู้ที่ต้องการลึกลงไปเกี่ยวกับFiddle vs DLปล่อยให้มันบอกว่าจุดประสงค์ของพวกเขาคือการเชื่อมโยงไลบรารีภายนอกกับ Ruby แบบไดนามิก; คุณสามารถอ่านได้ที่เว็บไซต์ของทับทิมเอกสารเกี่ยวกับDLหรือซอ


@webRat เพิ่งแก้ไขโพสต์ใหม่ ฉันเห็นด้วยกับคุณ rbrealine.rb ถูกนำเสนอโดยผิด (ฉันคิดว่า) แก้ไขโดยชุมชน ขอบคุณสำหรับความสนใจ!
Franco Rondini

1
ทั้งหมดนี้ฟังดูน่าพอใจ อย่างไรก็ตามจดบันทึกความคิดเห็นด้านล่างจาก Msangle "ซอคืออะไร"
จะ

1
@Paul ที่คำตอบสองบรรทัดสุดท้ายมีสองลิงก์ที่บางทีคุณอาจไม่เคยเห็น: 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
บนเครื่อง Windows ของฉันฉันอยู่ไฟล์นี้rbreadline.rbและที่readline.rb C:\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 \ ทับทิม \ 2.0.0 \ dl.rb

เนื่องจากมันน่ารำคาญและคุณไม่ใช่ irb / pry หรือเจ้าของรหัสอัญมณีอื่น ๆ


3
หากคุณได้รับข้อผิดพลาดนี้เมื่อทำงานvagrant upบน Windows, C:\vagrant\embedded\lib\ruby\2.0.0dl.rbไฟล์นี้สามารถพบได้ที่
sjy

1
ขอบคุณ @syj เหมืองตั้งอยู่ที่C:\HashiCorp\Vagrant\embedded\lib\ruby\2.0.0\dl.rb
mpen

C: \ RailsInstaller \ Ruby2.1.0 \ lib \ ruby ​​\ 2.1.0 \ dl.rb บรรทัดที่ 8
Sunil BN

3

ผมได้รับการแก้ปัญหานี้ที่openshift.com

ความละเอียด:

ข้อผิดพลาดนี้เกิดขึ้นเฉพาะในเครื่อง Windows ที่มีรุ่น Ruby 2.0.0 จนกว่าเราจะสนับสนุน Ruby 2.0 อย่างเป็นทางการโปรดปรับลดรุ่นเป็น Ruby 1.9

บน Windows คุณสามารถติดตั้ง Ruby 1.9.3 พร้อมกับ 2.0 เปลี่ยน% PATH% ของคุณเป็นc:\ruby193\หรือไดเรกทอรีใด ๆ ที่คุณติดตั้งเป็นก่อนการติดตั้งอัญมณี


คุณสามารถให้ลิงก์เพิ่มเติมกับโซลูชันบน openshift.com ได้หรือไม่
Alexander Vogt

มีแผนจะสนับสนุนทับทิม 2.0 อย่างเป็นทางการในอนาคตอันใกล้นี้หรือไม่?
แบร์นฮาร์ด

@AlexanderVogt โซลูชันได้รับการอ้างอิงแล้ว ดูการแก้ไขของฉันด้านบน
Rod Argumedo

3

ข้อความ "DL เลิกใช้แล้วโปรดใช้ซอ" ไม่ใช่ข้อผิดพลาด; มันเป็นเพียงคำเตือน
การแก้ไข:
คุณสามารถเพิกเฉยได้ใน 3 ขั้นตอน
ขั้นตอนที่ 1 ไปที่ C: \ RailsInstaller \ Ruby2.1.0 \ lib \ ruby ​​\ 2.1.0
ขั้นตอนที่ 2 จากนั้นค้นหา dl.rb และเปิดไฟล์ด้วยตัวแก้ไขออนไลน์ใด ๆ เช่น Aptana, ข้อความประเสริฐ ฯลฯ
ขั้นตอนที่ 3 แสดงความคิดเห็นบรรทัดที่ 8 ด้วย '#' ie # warn "DL เลิกใช้แล้วโปรดใช้ Fiddle"
แค่นั้นแหละขอบคุณ


2

ฉันพบสิ่งนี้ด้วยตัวเองเมื่อฉันต้องการสร้างคำสั่งภายใต้ Windows

เพื่อหลีกเลี่ยงการส่งข้อความออกทุกครั้งที่ฉันรันแอปพลิเคชัน ธ อร์ของฉันฉันได้ปิดเสียงคำเตือนชั่วคราวขณะโหลด ธ อร์

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

นั่นช่วยให้ฉันไม่ต้องแก้ไขไฟล์ต้นฉบับของบุคคลที่สาม


วิธีแก้ปัญหาที่ยอดเยี่ยมมันไม่จำเป็นต้องมีการเปลี่ยนแปลงในรหัสของคนอื่น
Bernhard
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.