Les fenêtres

(Ruby 2.5.1) Correctif Windows – "Impossible de charger un tel fichier – Sqlite3 / Sqlite3_native (LoadError)"

Posted by admin

Si vous utilisez Windows, vous devez comprendre qu’il existe plusieurs gemmes qui nécessitent des bibliothèques externes pour être “construites” correctement.

Ces bibliothèques externes ne sont généralement pas présentes sur votre système et doivent être installées (et référencées) pour qu’elles fonctionnent. C’est pourquoi les gemmes MYSQL2 et RMagick sont considérées comme “difficiles” à installer.

Si vous utilisez SQLite3, les choses sont légèrement différentes.

Ce joyau a plusieurs “builds” destinés à fournir des fonctionnalités sur un certain nombre de plates-formes (y compris Windows). Bien que cela fonctionne dans les versions précédentes de Ruby, cela ne fonctionne pas pour Ruby 2.5.1+ – d’où l’erreur que vous voyez …

impossible de charger un tel fichier – sqlite3 / sqlite3_native (LoadError)

L’erreur est causée par l’installation et la tentative d’utiliser la version “mingw32” du gem. Cette version du gem est pré-compilée avec les fichiers de base de SQLite, mais a des problèmes lors de l’utilisation des versions ultérieures de Ruby.

La solution consiste à installer le gem pour la plate-forme “ruby” (qui fonctionne toujours très bien sous Windows):

gem installer sqlite3 –platform = ruby

Cela installera la version “native” du gem avec tous les fichiers appropriés, etc. – mais n’utilisera pas la fonctionnalité spécifique à la plate-forme fournie avec la version mingw32, par exemple.

Cela fonctionne à 100% hors de la boîte.

Cependant, il y a un autre problème. Si vous utilisez “bundler”, il remplacera souvent l’installation native de gem au profit d’une installation spécifique à la plate-forme. Cela signifie que si vous exécutez une mise à jour / une installation de bundle, il installera probablement sqlite3 gem avec la plate-forme mingw32.

Dans ce cas, vous devez supprimer * toutes * les références à ce dernier avec “gem uninstall”. C’est ce qui se passe habituellement (pour nous):

  • mise à jour du bundle [installs sqlite3]
  • gem supprimer sqlite3 [shows selection]
  • supprimer la variante “mingw32”
  • rails s [should work 100%]

Cela permettra au système de fonctionner avec la gemme.

Le gros problème est que lorsque vous utilisez la version “mingw32” du gem, il y aura une série de références / appels spécifiquement conçus pour invoquer certains éléments du gem.

Dans Ruby 2.5.1+ – pour une raison quelconque – ces appels ne sont pas pleinement utilisés pour garantir que le système peut faire le plus de progrès, d’où l’erreur que vous voyez. Pour résoudre ce problème, vous devez essentiellement être capable de “forcer” votre système à n’utiliser que la variante “ruby” du gem.

Évidemment, si vous utilisez Linux ou Mac comme environnement de développement, des choses comme celle-ci peuvent être évitées relativement facilement. Mais où est le plaisir de faire quelque chose de facile? Utilisez Windows!

Leave A Comment