Como instalo o sqlite3 para Ruby no Windows?

Sendo muito novo no Ruby / Rails, e depois de tentar resolver o problema eu mesmo neste fim de semana, estou tentando encontrar um conselho aqui.

Eu tenho uma configuração completa do Ruby / Apache / Passenger feita no FreeBSD, e estou tentando realizar a tarefa de usar o Windows como um ambiente de desenvolvimento Ruby.

Tão longe:

  • Ruby está instalado, v2.0.0p0 (2013-02-24) [x64-ming32]
  • Rails está instalado, v.3.2.12
  • Eu tenho o kit de desenvolvimento do Ruby instalado e registrado.
  • Eu tenho o sqlite3 dll / exe copiado para a pasta “bin” do Ruby (que também está no meu caminho usando o console “Iniciar prompt de comando com Ruby”).
  • Eu posso iniciar um servidor rails com sucesso e continuar com o tutorial http://guides.rubyonrails.org/getting_started.html para 3.3.
  • “> rake db: create” me diz:

    Por favor, instale o adaptador sqlite3: gem install activerecord-sqlite3-adapter (o sqlite3 não faz parte do pacote. Acrescente ao Gemfile.)

que eu não tenho “compreensão” de. Tentando instalar activerecord-sqlite3-adapter me dá um “Não foi possível encontrar uma gem válida …”

  • “> gem install sqlite3” retorna:

    Building native extensions. This could take a while... Building native extensions. This could take a while... ERROR: Error installing sqlite3: ERROR: Failed to build gem native extension.

    D:/Development/Ruby200-x64/bin/ruby.exe extconf.rb checking for sqlite3.h... *** extconf.rb failed ***

Agora estou preso no ponto em que nem sei em que estado está minha instalação do Ruby on Windows. Estou tentando seguir o tutorial principal do Rails e ele não especifica nenhum desses problemas (provavelmente porque Ruby no Windows parece ser uma dor natural para muitas pessoas.)

O que estou perdendo?!? Eu só estou tentando instalar o sqlite3 para Ruby no Windows, parece simples, certo?

Se eu fizer ">rais db" o shell SQLite é apresentado:

SQLite version 3.7.15.2 2013-01-09 11:53:05

Perguntas similares com etapas que não resolvem meu problema: Instalando o SQLite 3.6 no Windows 7

Mesmo que a pergunta tenha sido respondida, quero postar minha pesquisa para ajudar os outros. Eu encontrei muitas informações on-line, mas sendo um novato em Ruby eu tive um tempo difícil depois de tudo. A resposta básica vem do seguinte post https://github.com/luislavena/sqlite3-ruby/issues/82 com instruções de “paulwis” sobre como instalar corretamente o sqlite3 para o ruby ​​2.0.0-p0 e alguns comentários sobre o https: //github.com/rails/rails/issues/10150 . Então aqui está:

  1. Instale o Devkit Ruby para a sua configuração (DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe para mim desde que eu uso uma máquina x64)
  2. Baixe e extraia o pacote autoconf do Sqlite.org
  3. Execute o msys.bat (ele está dentro da pasta raiz do devkit do ruby)
  4. cd no caminho onde você baixou a fonte sqlite (por exemplo: “cd / c / dev / sqlite3” para o caminho “c: \ dev \ sqlite3” se você é novo no MSYS / MINGW32)
  5. Execute “./configure”
  6. Executar “make”
  7. Execute “make install”
  8. Obtenha a gem sqlite3 novamente, desta vez especificando a plataforma e o caminho para os binários recém-compilados:

     gem install sqlite3 --platform=ruby -- --with-sqlite3-include=[path\to\sqlite3.h] --with-sqlite3-lib=[path\to\sqlite3.o] 

    Por exemplo:

     gem install sqlite3 --platform=ruby -- --with-sqlite3-include=/c:/dev/sqlite3/ --with-sqlite3-lib=/c:/dev/sqlite3/.libs/ 

    (dos caminhos dados no passo 4)

  9. Verifique o Gemfile.lock do seu aplicativo de rails e verifique se ele aponta para a versão correta do sqlite3. O meu era “sqlite3 (1.3.7-x86-mingw32)” e manualmente mudou para “sqlite3 (1.3.7-x64-mingw32)”. Removendo a plataforma também funciona: “sqlite3 (1.3.7)”.

Espero que isso ajude alguém.

Consegui instalar o sqlite3 com o ruby2.0.0 no win XP32 com o seguinte comando:

c:\>gem install sqlite3 --platform=ruby -- --with-sqlite3-dir=C:/distr/sqlite --with-sqlite3-include=C:/distr/sqlite

Pasta C:/distr/sqlite contém os seguintes arquivos

  • shell.c
  • sqlite3.c
  • sqlite3.h
  • sqlite3ext.h
  • sqlite3.def
  • sqlite3.dll

Então, basicamente eu extraímos sqlite-amalgamation-3071602.zip e sqlite-dll-win32-x86-3071602.zip para C:/distr/sqlite .

ATENÇÃO

Você ainda precisa colocar uma cópia do sqlite3.dll e do sqlite3.def algum lugar para o PATH. IMHO é melhor manter binários sqlite3 na pasta bin do ruby.

 #!/usr/bin/env sh mkdir c:/sqlite3x86 wget -P c:/sqlite3x86 http://packages.openknapsack.org/sqlite/sqlite-3.7.15.2-x86-windows.tar.lzma cd c:/sqlite3x86 bsdtar --lzma -xf c:/sqlite3x86/sqlite-3.7.15.2-x86-windows.tar.lzma gem install sqlite3 --platform=ruby -- --with-opt-dir=c:/sqlite3x86 cd c:/ rm -rf c:/sqlite3x86 

Pensei em colocar uma resposta – a partir dos comentários, para o bem da posteridade. O problema parecia ser que eu peguei uma nova versão do Ruby / Rails (para Windows) que não era compatível “ainda” com o SQLite3.

Eu fiz o downgrade para o 1.9.x e pude fazer coisas funcionando.

A maneira mais fácil de configurar o Ruby on Rails em uma máquina Windows é usando o RailsInstaller, que instala e configura automaticamente o sqlite3 para você. Um passo.

http://railsinstaller.org/en

Para windows, vá para C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/sqlite3-1.3.13-x64-mingw32/lib/sqlite3.rb

e certifique-se

require "sqlite3" vez de nativo

Pegue o binário gordo daqui

https://ci.appveyor.com/project/MSP-Greg/sqlite3-ruby/build/3/job/hhk6ie8gdo545svr/artifacts

e

 gem install c:\path\to\downloaded_gem.gem