Ruby 2.0.0p0 IRB peringatan: "DL sudah usang, silakan gunakan Fiddle"

196

Saya baru saja mencopot versi Ruby saya yang lebih lama, menghapus semua permata saya (termasuk Rails), dan menginstal Ruby 2.0. Dengan kata lain, instal ulang sepenuhnya bersih. Setelah memulai IRB, saya menerima pesan ini:

DL sudah usang, silakan gunakan Fiddle

Catatan: Saya menggunakan mesin Windows.

apa maksud dari pesan ini?

fbonetti
sumber
2
Apa isi ~/.irbrcfile Anda ?
Todd A. Jacobs
2
Maafkan ketidaktahuan saya, tetapi di mana saya dapat menemukan file ini?
fbonetti
1
@CodeGnome Perhatikan bahwa @effbot ada di mesin Windows. Dari apa yang saya lihat, Windows tidak memiliki secara .irbrcdefault.
Charles Caldwell
2
Yang warnAnda dapatkan berasal dari file "Ruby200 \ lib \ ruby ​​\ 2.0.0 \ dl.rb". Saya mendapatkannya juga ketika saya memulai salah satu irbatau pry.
Charles Caldwell
14
Ini adalah pesan yang ditulis dengan buruk. Apa itu DL? Apa itu Biola? Mengapa saya harus berubah? Bagaimana saya bisa berubah?
Kolonel Panic

Jawaban:

208

Pesan yang Anda terima adalah umum ketika Anda memiliki ruby 2.0.0p0 (2013-02-24)di atas Windows .

Pesan " DL is deprecated, please use Fiddle" bukan kesalahan; itu hanya peringatan .

Sumbernya adalah pemberitahuan Penghentian untuk DL yang diperkenalkan beberapa waktu lalu di dl.rb(lihat revisi / 37910 ).

Pada Windows lib/ruby/site_ruby/2.0.0/readline.rbfile tersebut masih memerlukan dl.rbsehingga pesan peringatan keluar ketika Anda require 'irb'(karena irb membutuhkan 'readline') atau ketika hal lain ingin require 'readline'.

Anda dapat membuka readline.rbdengan editor teks favorit Anda dan mencari kode (dekat baris 4369):

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

Kami selalu dapat berharap untuk perbaikan untuk menyelesaikan penghinaan ini di rilis Ruby selanjutnya .

EDIT: Bagi mereka yang ingin lebih dalam tentang Fiddle vs DL , biarkan dikatakan bahwa tujuan mereka adalah untuk secara dinamis menghubungkan perpustakaan eksternal dengan Ruby; Anda dapat membaca di situs web ruby-doc tentang DL atau Fiddle .

Franco Rondini
sumber
@webRat Cukup sunting ulang kiriman; Saya setuju dengan Anda, rbrealine.rb diperkenalkan oleh Edit yang salah (saya kira) oleh komunitas. Terima kasih atas perhatian anda!
Franco Rondini
1
Semua ini terdengar sangat tidak memuaskan. Ngomong-ngomong, perhatikan komentar di bawah dari Msangle, "Apa itu biola?"
akan
1
@ Paul, pada dua baris terakhir dari jawaban ada dua tautan yang mungkin belum Anda lihat: 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
Di mesin Windows saya, saya menemukan file ini rbreadline.rbdan readline.rbdi C:\RailsInstaller\Ruby2.1.0\lib\ruby\site_ruby\2.1.0\ . Saya mengubah jalur dari require 'dl'menjadi require 'fiddle'. Tidak ada lagi peringatan.
Blairg23
1
Ini tidak bekerja karena ada ketergantungan, @ Blairg23
Martin Greenaway
74

Anda mungkin ingin mengomentari DL is deprecated, please use Fiddleperingatan di

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

karena itu menjengkelkan dan Anda bukan IRB / pencuri atau pemilik kode permata lainnya

Erwin Kaddy
sumber
3
Jika Anda mendapatkan kesalahan ini saat dijalankan vagrant updi Windows, file ini dapat ditemukan di C:\vagrant\embedded\lib\ruby\2.0.0dl.rb.
sjy
1
Terima kasih @syj, milik saya berada diC:\HashiCorp\Vagrant\embedded\lib\ruby\2.0.0\dl.rb
mpen
C: \ RailsInstaller \ Ruby2.1.0 \ lib \ ruby ​​\ 2.1.0 \ dl.rb baris 8
Sunil BN
3

Saya mendapatkan resolusi ini di openshift.com .

Resolusi:

Kesalahan ini hanya terjadi pada mesin Windows dengan versi Ruby 2.0.0. Sampai kami secara resmi mendukung Ruby 2.0, harap turunkan ke Ruby 1.9.

Di Windows, Anda dapat menginstal Ruby 1.9.3 bersama 2.0. Ubah% PATH% Anda menjadi c:\ruby193\atau direktori apa pun yang Anda instal sebelum menginstal gem.

Gaurav
sumber
Bisakah Anda memberikan tautan tambahan ke solusi di openshift.com?
Alexander Vogt
Apakah ada rencana untuk secara resmi mendukung ruby ​​2.0 dalam waktu dekat?
Bernhard
@AlexanderVogt Solusinya sekarang direferensikan. Lihat hasil edit saya di atas.
Rod Argumedo
3

Pesan "DL sudah usang, silakan gunakan Fiddle" bukan kesalahan; itu hanya peringatan.
Solusi:
Anda dapat mengabaikan ini dalam 3 langkah sederhana.
Langkah 1. Goto C: \ RailsInstaller \ Ruby2.1.0 \ lib \ ruby ​​\ 2.1.0
Langkah 2. Kemudian cari dl.rb dan buka file dengan editor online seperti Aptana, teks luhur dll.
Langkah 3. Komentari baris 8 dengan '#' yaitu # memperingatkan "DL sudah usang, silakan gunakan Fiddle".
Itu dia, terima kasih.

Arun Atluri
sumber
2

Saya mengalami ini sendiri ketika saya ingin membuat perintah thor di bawah Windows.

Untuk menghindari output pesan itu setiap kali saya menjalankan aplikasi thor saya, saya sementara menonaktifkan peringatan saat memuat thor:

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

Itu menyelamatkan saya dari keharusan mengedit file sumber pihak ketiga.

thomthom
sumber
solusi keren, tidak memerlukan perubahan kode orang lain.
Bernhard