impossible de charger un tel fichier - sqlite3 / sqlite3_native (LoadError) sur ruby ​​on rails


84

Lorsque j'essaie de configurer l'installation de base et l'initiation du serveur à l'aide de Rails 4.0.0 sur Ruby 2.0.0, je suis confronté au message d'erreur suivant.

/usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:6:in `require': cannot load such file -- sqlite3/sqlite3_native (LoadError)
    from /usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:6:in `rescue in <top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:2:in `<top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:72:in `block (2 levels) in require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `each'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:70:in `block in require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `each'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler/runtime.rb:59:in `require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/bundler-1.3.5/lib/bundler.rb:132:in `require'
    from /home/penchal/new/site/config/application.rb:7:in `<top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:76:in `require'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:76:in `block in <top (required)>'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:73:in `tap'
    from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.0/lib/rails/commands.rb:73:in `<top (required)>'
    from bin/rails:4:in `require'
    from bin/rails:4:in `<main>'

Comment éviter ce message d'erreur et continuer?


sur quel système d'exploitation essayez-vous?
Saifis le

Semble être un problème de Windows. Les solutions varient. Voyez si cela vous convient stackoverflow.com/a/6126062/2576857 .
Doodad du

1
Mais il ne semble pas qu'il utilise Windows. Peut - être que cet article serait utile.
Althaf Hameez

Oh ouais, / usr / local / etc, j'ai vu ça maintenant, mon mal. D'après ce que j'ai trouvé, la plupart des gens ayant ce problème étaient dus à sqlite exe et dll pas dans la variable PATH, mais cela n'est arrivé qu'aux utilisateurs de Windows. Je pense que l'article que vous avez fourni devrait frapper dans le mille, mais attendons de voir.
Doodad

Si Rails 4 et Ruby 2.1. - regardez ici
discipleartem

Réponses:


121

Trouvez votre fichier gemspec sqlite3. Un exemple est /usr/local/share/gem/specifications/sqlite3-1.3.7.gemspec

Windows: C:\Ruby21\lib\ruby\gems\2.1.0\specifications.

Vous devez ajuster en fonction de votre chemin Rubygem et de la version de sqlite3. Modifiez le fichier ci-dessus et recherchez la ligne suivante

s.require_paths=["lib"]

changez-le en

s.require_paths= ["lib/sqlite3_native"]

7
C'est une erreur fantastique à un problème qui ne devrait pas exister en premier lieu, étant donné le nombre d'utilisateurs de Rails sur Windows. J'aimerais savoir pourquoi exactement cela fonctionne bien ...

1
Cela a fonctionné pour 1.3.9 mais n'était pas nécessaire pour 1.3.11. Je suis sur Win7 x64.
Kidquick

3
Il a déjà présenté et erreur: impossible de charger 'active_record / connection_adapters / sqlite3_adapter'. Assurez-vous que l'adaptateur dans config / database.yml est valide. Si vous utilisez un adaptateur autre que 'mysql2', 'postgresql' ou 'sqlite3', ajoutez le gem adaptateur nécessaire au Gemfile.
Sterling Diaz le

3
l'erreur ci-dessus avec l'adaptateur ne semble pas être résolue, faire ce que hwding suggère ci-dessous en premier me ferait gagner du temps - encore une fois, peut-être qu'ils corrigeront cela dans les prochaines versions, ou cela dans des packages empilés comme RailsInstaller ( ruby2.3.1 avec devkit (mingw avec outils de construction), rails5.0.0.1) ps il est incroyable que ce problème persiste encore, après 2 ans - étant donné que sqlite est utilisé par défaut dans l'application squelette par défaut, et c'est la voie à suivre dans guides.rubyonrails.org/getting_started.html
hello_earth

2
Deux ans? Que diriez-vous de TROIS ans?
Warren P

19

voir :https://stackoverflow.com/a/39136421/6755206

heureusement, vous n'êtes pas obligé de passer à ruby ​​2.0,
il existe une solution à ce problème, après des essais sans fin ...

https://github.com/hwding/sqlite3-ruby-win


Pas

Pré

  • gem uninstall sqlite3 --all

La source

Construire

  • exécuter la ligne de commande dans le répertoire extrait
  • assurez-vous que votre compilateur C est installé et ajouté à PATH
  • gem install bundler
  • bundle install
  • rake native gem
  • vous trouverez un répertoire nommé 'pkg' généré

Installer

  • entrez le répertoire 'pkg'
  • gem install --local sqlite3-xxx.gem ('xxx' est le code de version)

Vérifier

  • irb
  • require 'sqlite3'

1
Merci @hwding. Cela fonctionne parfaitement! Dans mon cas, utilisateur Windows, il semble que deux versions de sqlite3 (32 et 64 bits) aient été compilées dans 'pkg', mais je viens d'installer la version 64bits (mon cas).
aaossa

1
oui, après beaucoup d'essais, c'est la seule façon qui a fonctionné .... d'autres personnes ( reddit.com/r/rails/comments/30s1cz/… ) suggèrent de passer à quelque chose comme vagabond et de sauter complètement Windows + Rails
hello_earth

1
Je confirme que c'est la seule solution qui fonctionne pour Windows 10; essayé quelques correctifs mais c'est le seul qui fonctionne.
numediaweb

1
J'ai fait selon les étapes mentionnées, mais je ne vois aucun dossier créé avec le nom pkg.
Yashu Mittal

Cela a fonctionné pour moi you'll find a dir named 'pkg' generatedcar je n'ai vu un tel répertoire nulle part. La solution de @Edson Momm ci-dessous a fonctionné pour moi.
MSC

19

Depuis la fusion de la demande d'extraction n ° 229 , sqlite3 peut être installé par git:clé. Il est possible d'utiliser sqlite3 facilement grâce à cet ajout dans votre Gemfile:

gem 'sqlite3', git: "https://github.com/sparklemotion/sqlite3-ruby"

Cela fonctionne sur RubyInstaller-2.4 et plus récent. Il installe automatiquement le package pacman requis mingw-w64-x86_64-sqlite3lorsque vous exécutez bundler install.

Il y a d'autres astuces pour Rails sous Windows dans la FAQ RubyInstaller2 .


1
Cette réponse est utile pour les nouveaux installateurs de ruby ​​ruby ​​version ruby 2.5.1p57 (2018-03-29 révision 63029) et rails version Rails 5.2.1
KTM

1
Le PR a fusionné entre-temps. J'ai mis à jour ma réponse en conséquence.
Lars Kanis

Pour contourner les problèmes SSL, j'ai utilisé: gem 'sqlite3', git: "git: //github.com/sparklemotion/sqlite3-ruby.git"
GrabzIt

13
gem uninstall sqlite3 --all
ridk exec pacman -S mingw-w64-x86_64-sqlite3
gem inst sqlite3 --platform ruby

Cela m'a résolu le problème.

Windows 10
Ruby 2.5.3
Rails 5.2.2

1
OMG est ce réel: D Seulement cela fonctionne pour moi, Windows 10 est terrible pour RoR. Merci beaucoup!
Utilisateur 987

A travaillé aussi pour moi. Mon problème a commencé après une mise à jour de ruby ​​2.4 vers ruby ​​2.6 sous Windows 10.
knut

C'était aussi la réponse pour moi sur Win10 Ruby 2.6 (x64). Merci!
vercingortix

J'ai en fait dû le faire plusieurs fois. Il semble que chaque fois que je ferais un bundle installpour installer un nouveau bijou, je rencontrerais à nouveau ce problème et aurais besoin de répéter les étapes ci-dessus.
vercingortix le

9

Modifiez simplement Gemfile et ajoutez gem 'sqlite3', platform: :ruby.


5

Aucune compilation des sources ou téléchargement de bibliothèques pré-compilées ne résoudra ce problème, croyez-moi j'ai tout essayé, le problème se situe ailleurs. Voici comment cela fonctionne sur Windows:

bundle update sqlite3

Vous obtiendrez probablement une autre erreur similaire après celle-ci concernant nokogiri, corrigez-la avec la commande:

bundle update nokogiri

Profitez de votre application Ruby!


4

La désinstallation et la réinstallation du gem sqlite3 ont fonctionné pour moi.

gem uninstall sqlite3

bundle

4

Cela a fonctionné pour moi:

gem 'sqlite3', git: "https://github.com/larskanis/sqlite3-ruby", branch: "add-gemspec"

4

MEILLEURE INSTALLATION OFFICIELLE

J'utilise des rails 5.2.1p57, Windows 10 Le simple fait d'exécuter les lignes suivantes a résolu le problème

gem uninstall sqlite3

et désinstallez toutes les versions installées. exécuter à nouveau la commande suivante

gem install sqlite3 --platform=ruby

Vous avez maintenant terminé. Faites-moi savoir si le problème persiste.


3

Si la réponse principale ne fonctionne pas, un correctif que j'ai découvert est simplement d'aller dans votre Gemfile et d'ajouter le numéro de version 1.3.11 (au lieu de 1.3.9) juste après sqlite3. Donc, la ligne de votre Gemfile devrait maintenant lire:

# Use sqlite3 as the database for Active Record
gem 'sqlite3',  '1.3.11'

2

J'ai eu la même erreur lorsque j'ai mis à niveau ma version Ruby vers 2.5.X. J'ai suivi avec rails task --tracecela le sqlite3 n'est pas disponible à la version 2.5, que je change mon GemFile le changement de gem "sqlite3" en "sqlite3-ruby", après avoir désinstallé le gem "sqlite3" et enfin je lance le bundle install.

Je ne sais pas quelle est la raison ... J'ai lu que "sqlite3" n'est pas encore disponible pour ruby ​​2.5, mais je ne suis pas sûr.


2

Pour éviter cette erreur, assurez-vous qu'il gem sqlite3est ajouté à votre Gemfile. Ensuite, extrayez les "exe" et "dll" du lien de téléchargement Sqlite vers le dossier bin de Ruby. Si le problème persiste. Essaye ça:

bundle update

gem uninstall sqlite3

Si vous avez le choix entre plusieurs versions de sqlite3, choisissez la dernière option «Toutes les versions». Entrez le dernier numéro ici

Sélectionnez le gem à désinstaller:
1. sqlite3-1.3.13
2. sqlite3-1.3.13-x64-mingw32
3. Toutes les versions
> 3 .
.
Si vous supprimez ce joyau, ces dépendances ne seront pas satisfaites.
Continuer avec la désinstallation? [yN]
> y

gem install sqlite3 --platform=ruby

rails s

Cela devrait fonctionner.

Lisez ce lien pour plus d'explications si ci-dessus fonctionne pour vous.


1

Cela m'est également arrivé. Il s'est avéré que j'avais initialement installé SQLite 1.3.10, mais j'ai ensuite copié quelques gemmes du projet de screencasts du tutoriel Rails et il a répertorié SQLite 1.3.9. Ensuite, j'ai eu la même erreur que vous. Je l'ai changé en 1.3.10 et cela a fonctionné.

(Ceci est sur Windows 7. J'exécutais le didacticiel de screencast sur Cloud9 IDE).


1

C'est la seule solution qui a fonctionné pour moi, dérivée de cet article sur le problème GitHub :

  1. Obtenez la version autoconf des sources sqlite3 sur https://www.sqlite.org/download.html .
  2. Démarrez le shell MSYS.
  3. Dans un endroit non emballé pour votre sqlite3, configure version statique seulement pour éviter DLL garder le PATH: ./configure --disable-shared.
  4. Construire et installer: make install DESTDIR=/c/dev/ruby/tmp. Vous pouvez changer de répertoire.
  5. Ouvrez l'invite de commande de Windows et exécutez gem uninstall sqlite3 --allpour supprimer toutes les gemmes sqlite3 existantes.
  6. Encore une fois sur l' invite de commandes de Windows, la construction et l' installation gem sqlite3: gem install sqlite3 --platform=ruby -- --with-sqlite3-include=C:\dev\ruby\tmp\usr\local\include --with-sqlite3-lib=C:\dev\ruby\tmp\usr\local\lib. Les répertoires include et lib peuvent être différents, donc vérifiez d'abord.

J'utilise Ruby version 2.5.1 et Rails version 5.2.0 sur Windows 10.


et fichier gemspec dans le dossier source du Gem
Bilal Qadri

1

je l'ai trouvé! J'ai vu ceci https://www.youtube.com/watch?v=lsrzvX0qzmA
j'ai installé: Version Rails: 5.2.1 Version Ruby: 2.5.3 (x64-mingw32) Sqlite version 1.3.13
et j'ai votre problème .. . ma solution:

  1. Dans votre dossier d'installation comme C: \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \
    vous avez des dossiers: "sqlite3-1.3.13" "sqlite3-1.3.13-x64-mingw32"
  2. Recherchez le fichier
    C: \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \ sqlite3-1.3.13 \ lib \ sqlite3 \ sqlite3_native.so
  3. Copiez-le dans C: \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \ sqlite3-1.3.13-x64-mingw32 \ lib \ sqlite3 \ 2.5 \ sqlite3_native.so (il se peut que des dossiers n'existent pas - créez et pâte)

1

Mis à jour

Ajout de ce qui suit au Gemfile corrigé pour moi: gem 'sqlite3', '1.4.0', plates-formes:: ruby


1

Changez votre gem sqlite3 dans le Gemfile pour cela:

gem 'sqlite3', git: "https://github.com/larskanis/sqlite3-ruby", branch: "add-gemspec"

Puis exécutez:

bundle install

0

Pour les utilisateurs OSX, cela peut résulter de l'utilisation d'un gestionnaire ruby ​​(par exemple rvm).

Si vous modifiez votre ~ / .bash_profile et ajoutez ceci:

[[ "$APP" = *"/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/"* ]] && {
  echo Xcode detected
  rvm use system
}

Vous pouvez contourner le problème. Redémarrez Xcode avant de tenter de construire à nouveau.

Le problème réel est suivi ici: https://openradar.appspot.com/28726736 ).

Le crédit complet va à: https://egeek.me/2018/04/14/ipa-export-error-in-xcode-and-ruby/

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.