não pode carregar tal arquivo – sqlite3 / sqlite3_native (LoadError) no ruby ​​on rails

Quando tento configurar a instalação básica e o início do servidor usando o Rails 4.0.0 no Ruby 2.0.0, estou enfrentando a seguinte mensagem de erro.

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

Como posso evitar essa mensagem de erro e prosseguir?

Encontre o seu arquivo sqlite3 gemspec. Um exemplo é /usr/local/share/gem/specifications/sqlite3-1.3.7.gemspec

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

Você deve ajustar de acordo com seu caminho Rubygem e a versão sqlite3. Edite o arquivo acima e procure a linha a seguir

 s.require_paths=["lib"] 

mude para

 s.require_paths= ["lib/sqlite3_native"] 

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

felizmente, você não precisa mudar para ruby ​​2.0
há uma solução para este problema, depois de infinitas tentativas …

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


Passos

Pré

  • gem uninstall sqlite3 --all

Fonte

Construir

  • executar linha de comando no diretório extraído
  • Certifique-se de ter seu compilador C instalado e adicionado ao PATH
  • gem install bundler
  • bundle install
  • rake native gem
  • você encontrará um diretório chamado ‘pkg’ gerado

Instalar

  • digite dir ‘pkg’
  • gem install --local sqlite3-xxx.gem (‘xxx’ é o código da versão)

Verifica

  • irb
  • require 'sqlite3'

Existe um pedido pull aberto # 229 para include um gemspec, para que o sqlite3 possa ser instalado por git: key. Até que seja mesclado, é possível usar o sqlite3 facilmente através desta adição no seu Gemfile :

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

Isso funciona no RubyInstaller-2.4 e mais recente. Ele instala automaticamente o pacote pacman requerido mingw-w64-x86_64-sqlite3 quando você executa a bundler install .

Há mais algumas dicas para o Rails no Windows no FAQ do RubyInstaller2 .

Nenhuma compilation das fonts ou o download de bibliotecas pré-compiladas resolverá esse problema, acredite em mim, tentei de tudo, o problema está em outro lugar. É assim que funciona no Windows:

bundle update sqlite3

Você provavelmente terá outro erro semelhante após este nokogiri, corrija-o com o comando:

bundle update nokogiri

Aproveite o seu aplicativo Ruby!

Desinstalar e reinstalar a gema sqlite3 funcionou para mim.

 gem uninstall sqlite3 bundle 

Se a resposta principal não funcionar, uma correção que eu descobri é simplesmente ir ao seu Gemfile e adicionar o número da versão 1.3.11 (em vez de 1.3.9) logo após o sqlite3. Então a linha no seu Gemfile deve agora ler:

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

Isso também aconteceu a mim. Descobri que eu havia originalmente instalado o SQLite 1.3.10, mas depois copiei algumas gemas do projeto de screencasts do Rails e ele listou o SQLite 1.3.9. Então eu tenho o mesmo erro que você fez. Eu mudei de volta para 1.3.10 e funcionou.

(Isso está no Windows 7. Eu estava executando o tutorial de screencast no Cloud9 IDE).

Esta é a única solução que funcionou para mim, derivada deste post de problema do GitHub :

  1. Obtenha a versão autoconf das fonts sqlite3 em https://www.sqlite.org/download.html .
  2. Inicie o shell MSYS.
  3. No local descompactado do seu sqlite3, configure a versão estática apenas para evitar manter a DLL no PATH: ./configure --disable-shared .
  4. Construa e instale: make install DESTDIR=/c/dev/ruby/tmp . Você pode mudar o diretório.
  5. Abra o prompt de comando do windows e execute gem uninstall sqlite3 --all para remover todas as gemas sqlite3 existentes.
  6. Novamente no prompt de comando do windows, construa e instale o 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 . Esses diretórios include e lib podem ser diferentes, portanto verifique primeiro.

Estou usando o Ruby versão 2.5.1 e o Rails versão 5.2.0 no Windows 10.

Basta editar Gemfile e adicionar gem 'sqlite3', platform: :ruby .

Eu tive o mesmo erro quando atualizei minha versão Ruby para 2.5.X. Eu rails task --trace com rails task --trace que o sqlite3 não está disponível para a versão 2.5, que eu mudei o meu GemFile a gem “sqlite3” mudar para “sqlite3-ruby”, depois de desinstalar a gem “sqlite3” e finalmente eu executar o bundle install .

Eu não sei qual é o motivo … Eu li que “sqlite3” não está disponível para o ruby ​​2.5 ainda, mas não tenho certeza.