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.