imansible caricare tale file – sqlite3 / sqlite3_native (LoadError) su ruby ​​on rails

Quando provo a configurare l’installazione di base e l’avvio del server utilizzando Rails 4.0.0 su Ruby 2.0.0, sto affrontando 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 ' from /usr/local/lib/ruby/gems/2.0.0/gems/sqlite3-1.3.7/lib/sqlite3.rb:2:in `' 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 `' 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 ' 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 `' from bin/rails:4:in `require' from bin/rails:4:in `' 

Come posso evitare questo messaggio di errore e procedere ulteriormente?

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

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

Dovresti modificare secondo il tuo percorso Rubygem e la versione sqlite3. Modifica il file sopra e cerca la seguente riga

 s.require_paths=["lib"] 

cambiarlo in

 s.require_paths= ["lib/sqlite3_native"] 

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

fortunatamente, non è necessario passare a Ruby 2.0
c’è una soluzione a questo problema, dopo aver provato senza fine …

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 dir chiamata ‘pkg’ generata

Installare

  • inserisci dir ‘pkg’
  • gem install --local sqlite3-xxx.gem (‘xxx’ è il codice di versione)

Dai un’occhiata

  • irb
  • require 'sqlite3'

C’è una richiesta pull # 229 per includere un gemspec, in modo che sqlite3 possa essere installato per git: key. Fino a quando non viene unito, è ansible utilizzare sqlite3 facilmente attraverso questa aggiunta nel tuo Gemfile :

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

Funziona su RubyInstaller-2.4 e successivi. Installa automaticamente il pacchetto pacman richiesto mingw-w64-x86_64-sqlite3 quando si esegue bundler install .

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

Nessuna compilazione delle fonti o il download di librerie precompilate risolverà questo problema, credimi ho provato di tutto, il problema sta da qualche altra parte. Ecco come funziona su Windows:

bundle update sqlite3

Probabilmente otterrai un altro errore simile dopo quello relativo a nokogiri, correggendolo con il comando:

bundle update nokogiri

Goditi la tua App Ruby!

La disinstallazione e la reinstallazione della gem sqlite3 hanno funzionato per me.

 gem uninstall sqlite3 bundle 

Se la risposta migliore non funziona, una correzione che ho scoperto è semplicemente andare al tuo Gemfile e aggiungere il numero di versione 1.3.11 (anziché 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' 

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

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

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

Ho avuto lo stesso errore quando aggiorno la mia versione di Ruby alla 2.5.X. Ho rintracciato il rails task --trace che sqlite3 non è disponibile per la versione 2.5, che cambio il mio GemFile la gem “sqlite3” cambia in “sqlite3-ruby”, dopo che ho disinstallato la gem “sqlite3” e infine eseguo il bundle install .

Non so quale sia la ragione … Ho letto che “sqlite3” non è ancora disponibile per Ruby 2.5, ma non ne sono sicuro.

Questa è l’unica soluzione per me, derivata da questo post di rilascio GitHub :

  1. Ottieni la versione autoconf dei sorgenti sqlite3 da https://www.sqlite.org/download.html .
  2. Avvia shell MSYS.
  3. In posizione decompressa per sqlite3, configura solo la versione statica per evitare di mantenere DLL su PATH: ./configure --disable-shared .
  4. Costruiscilo e installalo: make install DESTDIR=/c/dev/ruby/tmp . Puoi cambiare la directory.
  5. Apri il prompt dei comandi di Windows ed esegui gem uninstall sqlite3 --all per rimuovere tutte le gemme sqlite3 esistenti.
  6. Ancora al prompt dei comandi di windows, compilare ed installare 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 . Quelle incluse e le directory lib possono essere diverse, quindi controlla prima.

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