impossibile caricare tale file - sqlite3 / sqlite3_native (LoadError) su ruby ​​su rails


84

Quando provo a configurare l'installazione di base e l'avvio del server utilizzando Rails 4.0.0 su Ruby 2.0.0, ricevo il seguente messaggio di errore.

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

Come posso evitare questo messaggio di errore e procedere oltre?


su quale sistema operativo lo stai provando?
Saifis

Sembra essere un problema di Windows. Le soluzioni variano. Verifica se questo andrà bene per te stackoverflow.com/a/6126062/2576857 .
Doodad

1
Ma non sembra che stia usando Windows. Forse questo articolo potrebbe essere d'aiuto.
Althaf Hameez

Oh sì, / usr / local / ecc, l'ho visto ora, colpa mia. Da quello che ho trovato, la maggior parte delle persone con questo problema era a causa di sqlite exe e dll non nella variabile PATH, ma ciò è accaduto solo agli utenti di Windows. Penso che l'articolo che hai fornito dovrebbe colpire nel segno, ma aspettiamo e vediamo.
Doodad

Se Rails 4 e Ruby 2.1. - guarda qui
discipleartem

Risposte:


121

Trova il tuo file gemspec sqlite3. Un esempio è /usr/local/share/gem/specifications/sqlite3-1.3.7.gemspec

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

Dovresti regolare in base al tuo percorso di Rubygem e alla versione sqlite3. Modifica il file sopra e cerca la riga seguente

s.require_paths=["lib"]

cambiarlo in

s.require_paths= ["lib/sqlite3_native"]

7
Questo è un errore fantastico per un problema che non dovrebbe esistere in primo luogo, dato il numero di utenti Rails su Windows. Mi piacerebbe sapere perché funziona esattamente, però ...

1
Questo ha funzionato per 1.3.9 ma non era necessario per 1.3.11. Sono su Win7 x64.
Kidquick

3
Già presentato ed errore: Impossibile caricare "active_record / connection_adapters / sqlite3_adapter". Assicurati che l'adattatore in config / database.yml sia valido. Se usi un adattatore diverso da "mysql2", "postgresql" o "sqlite3" aggiungi l'adattatore gem necessario al Gemfile.
Sterling Diaz

3
l'errore di cui sopra con l'adattatore non sembra essere risolvibile, fare prima quello che hwding suggerisce di seguito mi farebbe risparmiare un bel po 'di tempo - di nuovo, però, forse lo risolveranno nelle prossime versioni, o lo risolveranno in pacchetti impilati come RailsInstaller ( ruby2.3.1 con devkit (mingw con strumenti di compilazione), rails5.0.0.1) ps è incredibile che questo problema persista, dopo 2 anni, dato che sqlite è usato di default nell'applicazione predefinita dello scheletro, ed è la strada da percorrere in guides.rubyonrails.org/getting_started.html
hello_earth

2
Due anni? Che ne dici di TRE anni?
Warren P

19

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

fortunatamente, non devi passare a ruby ​​2.0,
c'è una soluzione a questo problema, dopo infiniti tentativi ...

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


Passi

Pre

  • gem uninstall sqlite3 --all

fonte

Costruire

  • eseguire la riga di comando nella directory estratta
  • assicurati di avere il tuo compilatore C installato e aggiunto a PATH
  • gem install bundler
  • bundle install
  • rake native gem
  • troverai una directory chiamata "pkg" generata

Installare

  • inserisci dir "pkg"
  • gem install --local sqlite3-xxx.gem ("xxx" è il codice della versione)

Dai un'occhiata

  • irb
  • require 'sqlite3'

1
Grazie @hwding. Funziona perfettamente! Nel mio caso, utente Windows, sembra che due versioni di sqlite3 (32 e 64 bit) siano state compilate in "pkg", ma ho appena installato quella a 64 bit (il mio caso).
aaossa

1
sì, dopo un sacco di tentativi, questo è l'unico modo che ha funzionato .... altre persone ( reddit.com/r/rails/comments/30s1cz/… ) suggeriscono di spostarsi su qualcosa come vagrant e saltare del tutto Windows + Rails
ciao_earth

1
Confermo che questa è l'unica soluzione funzionante per Windows 10; ho provato un paio di correzioni ma questa è l'unica funzionante.
numediaweb

1
Ho fatto secondo i passaggi menzionati, ma non vedo nessuna cartella creata con il nome pkg.
Yashu Mittal

Ha funzionato per me fino a you'll find a dir named 'pkg' generatedquando non vedevo una directory del genere da nessuna parte. La soluzione di @Edson Momm di seguito ha funzionato per me.
MSC

19

Poiché la richiesta pull # 229 è stata unita, sqlite3 può essere installato per git:chiave. È possibile utilizzare sqlite3 facilmente tramite questa aggiunta nel tuo Gemfile:

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

Funziona su RubyInstaller-2.4 e versioni successive. Installa automaticamente il pacchetto pacman richiesto mingw-w64-x86_64-sqlite3durante l'esecuzione bundler install.

Ci sono altri suggerimenti per Rails su Windows nelle FAQ di RubyInstaller2 .


1
Questa risposta è utile per i nuovi installatori di ruby ​​versione ruby ruby ​​2.5.1p57 (2018-03-29 revisione 63029) e rails versione Rails 5.2.1
KTM

1
Nel frattempo il PR è stato fuso. Ho aggiornato di conseguenza la mia risposta.
Lars Kanis

Per aggirare i problemi SSL ho usato: 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

Questo mi ha risolto il problema.

Windows 10
Ruby 2.5.3
Rails 5.2.2

1
OMG è reale: D Solo questo funziona per me, Windows 10 è terribile per RoR. Molte grazie!
Utente 987

Ha funzionato anche per me. Il mio problema è iniziato dopo un aggiornamento da Ruby 2.4 a Ruby 2.6 su Windows 10.
Knut

Questa è stata la risposta anche per me su Win10 Ruby 2.6 (x64). Grazie!
vercingortix

In realtà ho dovuto farlo un paio di volte. Sembra che ogni volta che farei bundle installper installare una nuova gemma, mi imbatterei di nuovo in questo problema e dovrei ripetere i passaggi precedenti.
vercingortix

9

Basta modificare Gemfile e aggiungere gem 'sqlite3', platform: :ruby.


5

Nessuna compilazione dei sorgenti o download di librerie precompilate risolverà questo problema, credetemi ho provato di tutto, il problema è altrove. Ecco come funziona su Windows:

bundle update sqlite3

Probabilmente avrai un altro errore simile dopo questo relativo a nokogiri, risolvilo con il comando:

bundle update nokogiri

Goditi la tua App Ruby!


4

Disinstallare e reinstallare la gemma sqlite3 ha funzionato per me.

gem uninstall sqlite3

bundle

4

Questo ha funzionato per me:

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

4

MIGLIORE INSTALLAZIONE UFFICIALE

Sto usando rails 5.2.1p57, Windows 10 L'esecuzione delle seguenti linee ha risolto il problema

gem uninstall sqlite3

e disinstalla tutte le versioni installate. eseguire nuovamente il seguente comando

gem install sqlite3 --platform=ruby

Ora hai finito. Fammi sapere se il problema persiste.


3

Se la risposta in alto non funziona, una soluzione che ho scoperto è semplicemente andare al tuo Gemfile e aggiungere il numero di versione 1.3.11 (invece di 1.3.9) subito dopo sqlite3. Quindi la riga nel tuo Gemfile dovrebbe ora leggere:

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

2

Ho avuto lo stesso errore quando aggiorno la mia versione di Ruby alla 2.5.X. Ho rilevato rails task --traceche sqlite3 non è disponibile per la versione 2.5, quindi cambio il mio GemFile, la gem "sqlite3" cambia in "sqlite3-ruby", dopo aver disinstallato la gem "sqlite3" e infine ho eseguito ilbundle install .

Non so quale sia la ragione ... Ho letto che "sqlite3" non è ancora disponibile per ruby ​​2.5, ma non ne sono sicuro.


2

Per evitare questo errore, assicurati che gem sqlite3venga aggiunto al tuo Gemfile. Quindi estrai "exe" e "dll" dal link per il download di Sqlite nella cartella bin di Ruby. Se il problema persiste. Prova questo:

bundle update

gem uninstall sqlite3

Data la possibilità di scegliere tra più versioni di sqlite3, scegli l'ultima opzione "Tutte le versioni". Inserisci qui l'ultimo numero

Seleziona gem da disinstallare:
1. sqlite3-1.3.13
2. sqlite3-1.3.13-x64-mingw32
3. Tutte le versioni
> 3 .
.
Se rimuovi questa gemma, queste dipendenze non verranno soddisfatte.
Continuare con la disinstallazione? [yN]
> y

gem install sqlite3 --platform=ruby

rails s

Questo dovrebbe funzionare.

Leggi questo link per ulteriori spiegazioni se sopra funziona per te.


1

Questo è successo anche a me. Si è scoperto che originariamente avevo installato SQLite 1.3.10, ma poi ho copiato alcune gemme dal progetto screencast del tutorial di Rails e ho elencato SQLite 1.3.9. Poi ho ricevuto lo stesso errore che hai fatto tu. L'ho cambiato di nuovo in 1.3.10 e ha funzionato.

(Questo è su Windows 7. Stavo eseguendo il tutorial screencast su Cloud9 IDE).


1

Questa è l'unica soluzione che ha funzionato per me, derivata da questo post sul problema di GitHub :

  1. Ottieni la versione autoconf dei sorgenti sqlite3 da https://www.sqlite.org/download.html .
  2. Avvia la shell MSYS.
  3. In posizione spacchettato per la sqlite3, versione statica di configurazione solo per evitare di mantenere DLL sul PERCORSO: ./configure --disable-shared.
  4. Costruire e installarlo: make install DESTDIR=/c/dev/ruby/tmp. Puoi cambiare la directory.
  5. Apri il prompt dei comandi di Windows ed esegui gem uninstall sqlite3 --allper rimuovere tutte le gemme sqlite3 esistenti.
  6. Anche in questo caso il prompt dei comandi di Windows, costruire ed installare gemma 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. Quelle directory include e lib possono essere diverse, quindi controlla prima.

Sto usando Ruby versione 2.5.1 e Rails versione 5.2.0 su Windows 10.


e il file gemspec nella cartella dei sorgenti di Gem
Bilal Qadri

1

l'ho trovato! ho visto questo https://www.youtube.com/watch?v=lsrzvX0qzmA
ho installato: Rails version: 5.2.1 Ruby version: 2.5.3 (x64-mingw32) Sqlite version 1.3.13
and I have your problem .. . la mia soluzione:

  1. Nella tua cartella di installazione come C: \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \
    hai le cartelle: "sqlite3-1.3.13" "sqlite3-1.3.13-x64-mingw32"
  2. Trova il file
    C: \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \ sqlite3-1.3.13 \ lib \ sqlite3 \ sqlite3_native.so
  3. Copialo in C: \ Ruby25-x64 \ lib \ ruby ​​\ gems \ 2.5.0 \ gems \ sqlite3-1.3.13-x64-mingw32 \ lib \ sqlite3 \ 2.5 \ sqlite3_native.so (potrebbero essere cartelle inesistenti - crea e incolla)

1

Aggiornato

Aggiunta di quanto segue al Gemfile corretto per me: gem 'sqlite3', '1.4.0', piattaforme:: ruby


1

Cambia la tua gemma sqlite3 nel Gemfile per questo:

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

Quindi esegui:

bundle install

0

Per gli utenti OSX, questo può derivare dall'utilizzo di un gestore ruby ​​(es. Rvm).

Se modifichi il tuo ~ / .bash_profile e aggiungi questo:

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

Puoi aggirare il problema. Riavvia Xcode prima di provare a ricostruire.

Il problema effettivo è monitorato qui: https://openradar.appspot.com/28726736 ).

Il merito completo va a: https://egeek.me/2018/04/14/ipa-export-error-in-xcode-and-ruby/

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.