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?

Penchala Reddy Audireddy
la source
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"]
Harish Gopalakrishnan
la source
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'
hwding
la source
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 .

Lars Kanis
la source
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
Edson maman
la source
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.

RAM
la source
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!

Norman Seßler
la source
4

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

gem uninstall sqlite3

bundle
JackHasaClavier
la source
4

Cela a fonctionné pour moi:

gem 'sqlite3', git: "https://github.com/larskanis/sqlite3-ruby", branch: "add-gemspec"
Bolan Oluwa
la source
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.

Pradeep Sapkota
la source
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'
Andrew Britton
la source
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.

Adrian Higuita
la source
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.

Saurabh Borse
la source
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).

Paul Macias
la source
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.

ismailarilik
la source
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)
Roman Dergunov
la source
1

Mis à jour

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

Ryan
la source
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
Nicolás Nisoria
la source
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/

Julien K
la source