Eine solche Datei kann nicht geladen werden - sqlite3 / sqlite3_native (LoadError) auf Ruby on Rails

84

Wenn ich versuche, die grundlegende Installation und Initiierung des Servers mit Rails 4.0.0 unter Ruby 2.0.0 einzurichten, wird die folgende Fehlermeldung angezeigt.

/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>'

Wie kann ich diese Fehlermeldung vermeiden und fortfahren?

Penchala Reddy Audireddy
quelle
Auf welchem ​​Betriebssystem probierst du das an?
Saifis
Scheint ein Windows-Problem zu sein. Lösungen variieren. Überprüfen Sie, ob dies für Sie von stackoverflow.com/a/6126062/2576857 ausreicht .
Doodad
1
Aber es scheint nicht, dass er Windows benutzt. Vielleicht wäre dieser Artikel hilfreich.
Althaf Hameez
Oh ja, / usr / local / etc, habe das jetzt gesehen, mein schlechtes. Nach allem, was ich gefunden habe, waren die meisten Leute, die dieses Problem hatten, wegen SQLite Exe und DLL nicht in der PATH-Variablen, aber das passierte nur Windows-Benutzern. Ich denke, der Artikel, den Sie zur Verfügung gestellt haben, sollte den Nagel auf den Kopf treffen, aber lassen Sie uns abwarten.
Doodad
Wenn Rails 4 und Ruby 2.1. - schau her
Disziplin

Antworten:

121

Finden Sie Ihre sqlite3 gemspec-Datei. Ein Beispiel ist /usr/local/share/gem/specifications/sqlite3-1.3.7.gemspec

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

Sie sollten entsprechend Ihrem Rubygem-Pfad und Ihrer sqlite3-Version anpassen. Bearbeiten Sie die Datei oben und suchen Sie nach der folgenden Zeile

s.require_paths=["lib"]

ändere es auf

s.require_paths= ["lib/sqlite3_native"]
Harish Gopalakrishnan
quelle
7
Dies ist ein fantastischer Fehler bei einem Problem, das angesichts der Anzahl der Rails-Benutzer unter Windows überhaupt nicht existieren sollte. Ich würde gerne wissen, warum genau das funktioniert ...
1
Dies funktionierte für 1.3.9, war jedoch für 1.3.11 nicht erforderlich. Ich bin auf Win7 x64.
Kidquick
3
Es wurde bereits angezeigt und Fehler: 'active_record / connection_adapters / sqlite3_adapter' konnte nicht geladen werden. Stellen Sie sicher, dass der Adapter in config / database.yml gültig ist. Wenn Sie einen anderen Adapter als 'mysql2', 'postgresql' oder 'sqlite3' verwenden, fügen Sie der Gemfile den erforderlichen Adapter-Edelstein hinzu.
Sterling Diaz
3
Der obige Fehler mit dem Adapter scheint nicht lösbar zu sein. Wenn ich zuerst das mache, was hwding unten vorschlägt, würde ich mir einige Zeit sparen - vielleicht beheben sie das in den nächsten Versionen oder in gestapelten Paketen wie RailsInstaller ( ruby2.3.1 mit devkit (mingw mit build tools), rails5.0.0.1) ps es ist unglaublich, dass dieses problem auch nach 2 jahren bestehen bleibt - da sqlite standardmäßig in der skeleton-standardanwendung verwendet wird und der richtige weg ist in guides.rubyonrails.org/getting_started.html
hello_earth
2
2 Jahre? Wie wäre es mit drei Jahren?
Warren P
19

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

Zum Glück müssen Sie nicht auf Ruby 2.0
umsteigen. Nach endlosen Versuchen gibt es eine Lösung für dieses Problem.

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


Schritte

Vor

  • gem uninstall sqlite3 --all

Quelle

Bauen

  • Führen Sie die Befehlszeile im extrahierten Verzeichnis aus
  • Stellen Sie sicher, dass Sie Ihren C-Compiler installiert und zu PATH hinzugefügt haben
  • gem install bundler
  • bundle install
  • rake native gem
  • Sie finden ein Verzeichnis mit dem Namen 'pkg' generiert

Installieren

  • Geben Sie dir 'pkg' ein.
  • gem install --local sqlite3-xxx.gem ('xxx' ist Versionscode)

Prüfen

  • irb
  • require 'sqlite3'
hwding
quelle
1
Danke @hwding. Das funktioniert perfekt! In meinem Fall, Windows-Benutzer, scheinen zwei sqlite3-Versionen (32 und 64 Bit) in 'pkg' kompiliert worden zu sein, aber ich habe gerade die 64-Bit-Version installiert (mein Fall).
aaossa
1
Ja, nach vielen Versuchen ist dies der einzige Weg, der funktioniert hat. Andere Leute ( reddit.com/r/rails/comments/30s1cz/… ) schlagen vor, zu etwas wie Vagabund zu
wechseln
1
Ich bestätige, dass dies die einzige Lösung ist, die für Windows 10 funktioniert. habe ein paar Korrekturen versucht, aber dies ist die einzige, die funktioniert.
Numediaweb
1
Ich habe die genannten Schritte ausgeführt, sehe jedoch keinen Ordner, der mit dem Namen erstellt wurde pkg.
Yashu Mittal
Hat für mich you'll find a dir named 'pkg' generatedfunktioniert , da ich nirgendwo ein solches Verzeichnis gesehen habe. Die unten stehende Lösung von @Edson Momm hat bei mir funktioniert.
MSC
19

Da die Pull-Anforderung Nr. 229 zusammengeführt wurde, kann sqlite3 pro git:Schlüssel installiert werden . Es ist möglich, sqlite3 einfach durch diesen Zusatz in Ihrem zu verwenden Gemfile:

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

Dies funktioniert unter RubyInstaller-2.4 und höher. Das erforderliche Pacman-Paket wird mingw-w64-x86_64-sqlite3beim Ausführen automatisch installiert bundler install.

Weitere Hinweise zu Rails unter Windows finden Sie in den RubyInstaller2-FAQ .

Lars Kanis
quelle
1
Diese Antwort ist hilfreich für die neuen Ruby-Installer Ruby-Version Ruby 2.5.1p57 (2018-03-29 Revision 63029) und Rails-Version Rails 5.2.1
KTM
1
Die PR wurde inzwischen zusammengelegt. Ich habe meine Antwort entsprechend aktualisiert.
Lars Kanis
Um SSL-Probleme zu umgehen, habe ich Folgendes verwendet: 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

Dies löste das Problem für mich.

Windows 10
Ruby 2.5.3
Rails 5.2.2
Edson Momm
quelle
1
OMG ist das echt: D Nur das funktioniert bei mir, Windows 10 ist für RoR schrecklich. Vielen Dank!
Benutzer 987
Arbeitete auch für mich. Mein Problem begann nach einem Update von Ruby 2.4 auf Ruby 2.6 unter Windows 10.
Knut
Dies war auch für mich die Antwort auf Win10 Ruby 2.6 (x64). Danke dir!
Vercingortix
Ich musste das tatsächlich ein paar Mal machen. Es scheint, dass ich jedes Mal, wenn ich ein bundle installneues Juwel installieren würde, erneut auf dieses Problem stoßen würde und die obigen Schritte wiederholen müsste.
Vercingortix
9

Bearbeiten Sie einfach Gemfile und fügen Sie hinzu gem 'sqlite3', platform: :ruby.

RAM
quelle
5

Kein Kompilieren der Quellen oder Herunterladen vorkompilierter Bibliotheken wird dieses Problem lösen. Glauben Sie mir, ich habe alles versucht, das Problem liegt woanders. So funktioniert es unter Windows:

bundle update sqlite3

Wahrscheinlich erhalten Sie nach diesem einen weiteren ähnlichen Fehler in Bezug auf Nokiaogiri. Beheben Sie ihn mit dem folgenden Befehl:

bundle update nokogiri

Viel Spaß mit Ihrer Ruby App!

Norman Seßler
quelle
4

Das Deinstallieren und Neuinstallieren des sqlite3-Edelsteins hat bei mir funktioniert.

gem uninstall sqlite3

bundle
JackHasaKeyboard
quelle
4

Das hat bei mir funktioniert:

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

BESTE OFFIZIELLE INSTALLATION

Ich benutze Rails 5.2.1p57, Windows 10 Nur das Ausführen der folgenden Zeilen hat das Problem behoben

gem uninstall sqlite3

und deinstallieren Sie alle installierten Versionen. Führen Sie den folgenden Befehl erneut aus

gem install sqlite3 --platform=ruby

Sie sind jetzt fertig. Lassen Sie mich wissen, wenn das Problem weiterhin besteht.

Pradeep Sapkota
quelle
3

Wenn die Top-Antwort nicht funktioniert, geht ein von mir entdeckter Fix einfach zu Ihrem Gemfile und fügt direkt nach sqlite3 die Versionsnummer 1.3.11 (anstelle von 1.3.9) hinzu. Die Zeile in Ihrer Gemfile sollte nun lauten:

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

Ich hatte den gleichen Fehler, als ich meine Ruby-Version auf 2.5.X aktualisierte. Ich rails task --tracehabe festgestellt, dass sqlite3 für Version 2.5 nicht verfügbar ist, als ich mein GemFile ändere, ändere ich das Gem "sqlite3" in "sqlite3-ruby", nachdem ich das Gem "sqlite3" deinstalliert und schließlich das ausgeführt habe bundle install.

Ich weiß nicht, was der Grund ist ... Ich habe gelesen, dass "sqlite3" für Ruby 2.5 noch nicht verfügbar ist, bin mir aber nicht sicher.

Adrian Higuita
quelle
2

Um diesen Fehler zu vermeiden, stellen Sie sicher, dass er gem sqlite3zu Ihrer Gemfile hinzugefügt wurde. Extrahieren Sie dann "exe" und "dll" aus dem Sqlite-Download-Link in Rubys bin-Ordner. Wenn das Problem weiterhin besteht. Versuche dies:

bundle update

gem uninstall sqlite3

Wenn Sie zwischen mehreren Versionen von sqlite3 wählen können, wählen Sie die letzte Option "Alle Versionen". Geben Sie hier die letzte Nummer ein

Wählen Sie das zu deinstallierende
Gem aus : 1. sqlite3-1.3.13
2. sqlite3-1.3.13-x64-mingw32
3. Alle Versionen
> 3 .
.
Wenn Sie dieses Juwel entfernen, werden diese Abhängigkeiten nicht erfüllt.
Weiter mit Deinstallieren? [yN]
> y

gem install sqlite3 --platform=ruby

rails s

Das sollte funktionieren.

Lesen Sie diesen Link, um weitere Erklärungen zu erhalten, falls dies für Sie funktioniert.

Saurabh Borse
quelle
1

Das ist mir auch passiert. Es stellte sich heraus, dass ich ursprünglich SQLite 1.3.10 installiert hatte, aber dann einige Juwelen aus dem Screencasts-Projekt des Rails-Tutorials kopierte und SQLite 1.3.9 auflistete. Dann habe ich den gleichen Fehler bekommen, den Sie gemacht haben. Ich habe es wieder auf 1.3.10 geändert und es hat funktioniert.

(Dies ist unter Windows 7. Ich habe das Screencast-Tutorial unter Cloud9 IDE ausgeführt.)

Paul Macias
quelle
1

Dies ist die einzige für mich funktionierende Lösung, die aus diesem GitHub-Beitrag abgeleitet wurde :

  1. Die Autoconf-Version von SQLite3-Quellen finden Sie unter https://www.sqlite.org/download.html .
  2. Starten Sie die MSYS-Shell.
  3. Konfigurieren Sie an einem entpackten Speicherort für Ihr sqlite3 nur die statische Version, um zu vermeiden, dass die DLL auf PATH bleibt : ./configure --disable-shared.
  4. Erstellen und installieren Sie es : make install DESTDIR=/c/dev/ruby/tmp. Sie können das Verzeichnis ändern.
  5. Öffnen Sie die Eingabeaufforderung von Windows und führen Sie sie aus gem uninstall sqlite3 --all, um alle vorhandenen sqlite3-Edelsteine ​​zu entfernen.
  6. Erstellen und installieren Sie an der Eingabeaufforderung von Windows erneut 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. Diese include- und lib-Verzeichnisse können unterschiedlich sein. Überprüfen Sie dies zunächst.

Ich verwende Ruby Version 2.5.1 und Rails Version 5.2.0 unter Windows 10.

ismailarilik
quelle
und gemspec Datei im Quellordner des Gem
Bilal Qadri
1

Aktualisiert

Hinzufügen des Folgenden zu der für mich festgelegten Gem-Datei: gem 'sqlite3', '1.4.0', platform :: ruby

Ryan
quelle
1

Ändern Sie Ihren sqlite3-Edelstein in der Gemfile wie folgt:

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

Dann renne:

bundle install
Nicolás Nisoria
quelle
0

ich habe es gefunden! Ich habe diese https://www.youtube.com/watch?v=lsrzvX0qzmA gesehen, die
ich installiert habe: Rails-Version: 5.2.1 Ruby-Version: 2.5.3 (x64-mingw32) Sqlite-Version 1.3.13
und ich habe Ihr Problem. . meine Lösung:

  1. In Ihrem Installationsordner wie C: \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \ befinden sich
    folgende Ordner: "sqlite3-1.3.13" "sqlite3-1.3.13-x64-mingw32"
  2. Suchen Sie die Datei
    C: \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \ sqlite3-1.3.13 \ lib \ sqlite3 \ sqlite3_native.so
  3. Kopieren Sie es in C: \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \ sqlite3-1.3.13-x64-mingw32 \ lib \ sqlite3 \ 2.5 \ sqlite3_native.so (möglicherweise sind keine Ordner vorhanden - erstellen Sie und Einfügen)
Roman Dergunov
quelle
0

Für OSX-Benutzer kann dies auf die Verwendung eines Ruby-Managers (z. B. rvm) zurückzuführen sein.

Wenn Sie Ihr ~ / .bash_profile bearbeiten und Folgendes hinzufügen:

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

Sie können das Problem umgehen. Starten Sie Xcode neu, bevor Sie versuchen, erneut zu erstellen.

Das eigentliche Problem wird hier verfolgt: https://openradar.appspot.com/28726736 ).

Das volle Guthaben geht an: https://egeek.me/2018/04/14/ipa-export-error-in-xcode-and-ruby/

Julian K.
quelle