(Ruby 2.5.1) Perbaikan Windows – "Tidak Dapat Memuat Berkas Tersebut – Sqlite3 / Sqlite3_native (LoadError)"

Jika Anda menggunakan Windows, Anda harus menghargai bahwa ada beberapa permata yang membutuhkan pustaka eksternal agar dapat "dibangun" dengan benar.

Pustaka eksternal ini umumnya tidak ada di sistem Anda dan harus diinstal (dan direferensikan) untuk membuatnya bekerja. Inilah sebabnya mengapa orang-orang seperti permata MYSQL2 dan RMagick dilihat sebagai "sulit" untuk menginstal.

Jika Anda menggunakan SQLite3, semuanya sedikit berbeda.

Permata ini memiliki beberapa "build" yang dimaksudkan untuk menyediakan fungsionalitas di sejumlah platform (termasuk Windows). Sementara ini bekerja di versi Ruby yang lebih lama, itu tidak bekerja untuk Ruby 2.5.1+ – maka kesalahan yang Anda lihat …

tidak dapat memuat file seperti itu – sqlite3 / sqlite3_native (LoadError)

Kesalahan ini disebabkan oleh instalasi & upaya penggunaan versi "mingw32" dari permata. Versi permata ini sudah dikompilasi sebelumnya dengan file inti SQLite, tetapi memiliki masalah saat digunakan dengan versi Ruby yang lebih baru.

Solusinya adalah menginstal gem untuk platform "ruby" (yang masih berfungsi dengan baik di Windows):

gem install sqlite3 –platform = ruby

Ini akan menginstal versi "asli" dari permata dengan semua file yang sesuai dll – tetapi tidak akan menggunakan salah satu fungsi platform-spesifik yang datang dengan suka dari versi mingw32.

Ini akan bekerja 100% di luar kotak.

Namun, ada masalah lain. Jika Anda menggunakan "bundler", itu akan sering menimpa instalasi permata asli dan mendukung pemasangan platform khusus. Ini berarti bahwa jika Anda menjalankan bundel pembaruan / bundel menginstal, kemungkinan akan menginstal permata sqlite3 dengan platform mingw32.

Dalam hal ini, Anda perlu menghapus * semua * referensi ke yang terakhir dengan menggunakan "gem uninstall". Inilah yang biasanya terjadi (bagi kami):

  • pembaruan bundel [installs sqlite3]
  • gem uninstall sqlite3 [shows selection]
  • hapus varian "mingw32"
  • rel s [should work 100%]

Ini akan membuat sistem bekerja dengan permata.

Masalah besar adalah bahwa setiap kali Anda menggunakan versi "mingw32" dari permata, itu akan memiliki serangkaian referensi / panggilan yang dirancang khusus untuk memanggil elemen tertentu dari permata.

Di Ruby 2.5.1+ – karena alasan apa pun – panggilan ini tidak sepenuhnya digunakan untuk memastikan bahwa sistem mampu membuat kemajuan paling banyak, sehingga kesalahan yang Anda lihat. Untuk memperbaiki ini, Anda harus mampu "memaksa" sistem Anda untuk hanya menggunakan varian "ruby" dari permata.

Tentunya, jika Anda menggunakan Linux atau Mac sebagai lingkungan pengembangan – hal semacam ini dapat dengan mudah dihindari. Tapi di mana kesenangan dalam melakukan sesuatu itu mudah? Gunakan Windows!

Leave a Reply

Your email address will not be published. Required fields are marked *