يونكس / لينكس

(Ruby 2.5.1) Windows Düzeltme – "Bu Dosya Yüklenemiyor – Sqlite3 / Sqlite3_native (LoadError)"

Eğer Windows kullanıyorsanız, uygun bir şekilde "yerleşik" olması için harici kütüphanelere ihtiyaç duyan birkaç mücevher olduğunu takdir etmelisiniz.

Bu harici kütüphaneler genellikle sisteminizde mevcut değildir ve yüklenmesi gerekir (ve onları referans almak için başvurulan). İşte bu yüzden, MYSQL2 ve RMagick taşlarının beğenilmesi, kurulumu zor “zor” olarak görülebilir.

Eğer SQLite3 kullanıyorsanız, işler biraz farklıdır.

Bu mücevher, vermeyi amaçlayan birkaç "yapıya" sahiptir. Bir dizi platformda işlevsellik (Windows dahil). Bu, Ruby'nin önceki sürümlerinde çalışırken, Ruby 2.5.1+ için işe yaramıyor – dolayısıyla gördüğünüz hata …

böyle bir dosyayı yükleyemiyor – sqlite3 / sqlite3_native ( LoadError)

Hata, geminin "mingw32" versiyonunun kurulum ve teşebbüsünden kaynaklanıyor. Gem'in bu sürümü, SQLite çekirdek dosyaları ile önceden derlenmiştir, ancak Ruby'nin sonraki sürümleriyle birlikte kullanıldığında sorunlar yaşanmaktadır.

Çözüm, "ruby" platformu için gem yüklemektir. Windows):

gem install sqlite3 –platform = ruby ​​

Bu gemin "yerli" versiyonunu tüm uygun şekilde kuracak dosyalar vs – ancak mingw32 versiyonunun beğenisine sahip olan platforma özgü herhangi bir işlevi kullanmaz.

Bu kutudan% 100 çalışacaktır.

Ancak, başka bir sorun var. "Paketleyici" kullanırsanız, genellikle yerel gem yüklemesini platforma özgü olandan yana geçersiz kılar. Bu, bundle update / bundle install komutunu çalıştırırsanız, muhtemelen mingw32 platformuyla sqlite3 gemini yükleyecektir.

Bu örnekte, "gem kaldırma" yı kullanarak * herhangi bir * referansı kaldırmanız gerekir. İşte tipik olarak (bizim için):

  • gem güncellemesi sqlite3 [shows selection]
  • kaldır "mingw32" varyantı
  • raylar [should work 100%]

Bu sistem gemiyle çalışacak.

Büyük sorun şu ki; mingw32 "gem versiyonu, geminin belirli elemanlarını çağırmak için özel olarak tasarlanmış bir dizi referans / çağrıya sahip olacaktır.

Ruby 2.5.1+ – her ne sebeple olursa olsun – bu çağrılar tamamen sağlamak için kullanılmaz Sistemin en fazla ilerlemeyi yapabildiğini, dolayısıyla gördüğünüz hatayı yapabildiğini. Bunu düzeltmek için, sisteminizi yalnızca geminin "yakut" varyantını kullanacak şekilde "zorlamanız" gerekir.

Açıkçası, Linux veya Mac gibi bir geliştirme ortamı olarak kullanıyorsanız Bir şey türü nispeten basit bir şekilde önlenebilirdi. Ama bu kolay bir şey yapmanın eğlenceli yanı nerde? Windows kullan!