web-dev-qa-db-fra.com

ne peut pas charger un tel fichier - sqlite3/sqlite3_native (LoadError) sur Ruby on rails

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, le message d'erreur suivant s'affiche.

/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 puis-je éviter ce message d'erreur et continuer?

77

Recherchez votre fichier sqlite3 gemspec. 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 votre version de sqlite3 . Editez le fichier ci-dessus et cherchez la ligne suivante

s.require_paths=["lib"]

changez le en

s.require_paths= ["lib/sqlite3_native"]
118

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

heureusement, vous n'avez pas à passer à Ruby 2.0
il y a une solution à ce problème, après des tentatives sans fin ...

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


Pas

Pré

  • gem uninstall sqlite3 --all 

La source

Construire

  • lancer 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 dir 'pkg'
  • gem install --local sqlite3-xxx.gem ('xxx' est le code de version)

Vérifier

  • irb
  • require 'sqlite3'
19
hwding

Depuis que la requête # 229 a été fusionnée, sqlite3 peut être installé avec la clé git:. 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 paquet pacman requis mingw-w64-x86_64-sqlite3 lorsque vous exécutez bundler install.

Il existe quelques astuces supplémentaires pour Rails sous Windows dans RubyInstaller2 FAQ .

15
Lars Kanis
gem uninstall sqlite3 --all
ridk exec pacman -S mingw-w64-x86_64-sqlite3
gem inst sqlite3 --platform Ruby

Cela a résolu le problème pour moi.

Windows 10
Ruby 2.5.3
Rails 5.2.2
11
Edson Momm

Editez simplement Gemfile et ajoutez gem 'sqlite3', platform: :Ruby.

8
Ram

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 est ailleurs. Voici comment cela fonctionne sur Windows:

bundle update sqlite3

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

bundle update nokogiri

Profitez de votre application Ruby!

5
Norman Seßler

MEILLEURE INSTALLATION OFFICIELLE

J'utilise Rails 5.2.1p57, Windows 10 Il suffit de lancer les lignes suivantes pour résoudre le problème.

gem uninstall sqlite3

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

gem install sqlite3 --platform=Ruby

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

4
Pradeep Sapkota

Désinstaller et réinstaller la pierre précieuse sqlite3 a fonctionné pour moi.

gem uninstall sqlite3

bundle
4
JackHasaKeyboard

Cela a fonctionné pour moi: 

gem 'sqlite3', git: "https://github.com/larskanis/sqlite3-Ruby", branch: "add-gemspec"
3
Bolan Oluwa

Pour éviter cette erreur, assurez-vous que gem sqlite3 est ajouté à votre Gemfile . Ensuite, extrayez les "exe" et les "dll" de Lien de téléchargement Sqlite dans 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 gem pour désinstaller:
1. sqlite3-1.3.13
2. sqlite3-1.3.13-x64-mingw32
3. Toutes les versions
> 3 .
.
Si vous supprimez cette gemme, ces dépendances ne seront pas satisfaites.
Continuer avec Désinstaller? [yN]
> y

gem install sqlite3 --platform=Ruby

Rails s

Cela devrait marcher.

Lisez ceci link pour plus d’explications si ce qui précède fonctionne pour vous.

2
Saurabh Borse

Si la réponse la plus fréquente ne fonctionne pas, un correctif que j'ai découvert consiste tout simplement à accéder à votre Gemfile et à ajouter le numéro de version 1.3.11 (au lieu de 1.3.9) juste après sqlite3. Donc, la ligne dans votre Gemfile devrait maintenant se lire:

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

J'ai eu la même erreur lorsque j'ai mis à jour ma version de Ruby vers la version 2.5.X. J'ai suivi avec Rails task --trace que le sqlite3 n'est pas disponible pour la version 2.5, que j'ai changé mon GemFile, la gemme "sqlite3" est remplacée par "sqlite3-Ruby", après avoir désinstallé le gem "sqlite3" et enfin, j'ai exécuté le bundle install

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

2
Adrian Higuita

Cela m'est arrivé aussi. Il s’est avéré que j’avais initialement installé SQLite 1.3.10, mais j’ai ensuite copié certaines pierres précieuses du projet de didacticiels du tutoriel Rails, dans lequel SQLite 1.3.9 était répertorié. Ensuite, j'ai eu la même erreur que vous. Je l'ai changé à 1.3.10 et cela a fonctionné. 

(Ceci est sous Windows 7. J'utilisais le tutoriel de screencast sur Cloud9 IDE).

1
Paul Macias

C’est la seule solution qui a fonctionné pour moi, dérivée de cet article de GitHub :

  1. Obtenez la version autoconf des sources sqlite3 à l’adresse https://www.sqlite.org/download.html .
  2. Démarrez MSYS Shell.
  3. Dans l'emplacement décompressé de votre sqlite3, configurez la version statique uniquement pour éviter de conserver DLL sur PATH: ./configure --disable-shared.
  4. Construisez et installez-le: make install DESTDIR=/c/dev/Ruby/tmp. Vous pouvez changer le répertoire.
  5. Ouvrez la commande Invite de Windows et exécutez gem uninstall sqlite3 --all pour supprimer tous les gems sqlite3 existants.
  6. De nouveau sur Invite de commande de Windows, créez et installez sqlite3 gem: 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, vérifiez d’abord.

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

1
ismailarilik

Ces étapes ont fonctionné pour moi après avoir épuisé mon cerveau pendant des heures !:

  1. gem désinstaller sqlite3 --all
  2. gem installer sqlite3 --platform = Ruby
  3. gem désinstaller sqlite3

Lorsque demandé pour l'option: 

  1. sqlite3 (1.1.13 Ruby x64-mingw32)

La console Rails et le serveur Rails ont alors commencé à fonctionner.

1
Ryan

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 tel que 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. Trouver un 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 (les dossiers peuvent ne pas exister - créer et coller)
0
Roman Dergunov

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

Si vous éditez 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 générer à nouveau.

Le numéro actuel 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/

0
Julian K

Changez votre gem sqlite3 dans le Gemfile pour ceci:

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

Puis lancez:

bundle install
0
Nicolás Nisoria