ruby on rails - no se puede activar sqlite3(~> 1.3.6), ya activado sqlite3-1.4.0




ruby-on-rails (4)

Estoy usando Ubuntu y me encuentro con un problema cuando uso db: migrate para el proyecto ruby.

rails aborted!
LoadError: Error loading the 'sqlite3' Active Record adapter. Missing a gem it depends on? can't activate sqlite3 (~> 1.3.6), already activated sqlite3-1.4.0. Make sure all dependencies are added to Gemfile.
/home/juan/odin_on_rails/RailsaAPP/bin/rails:9:in `<top (required)>'
/home/juan/odin_on_rails/RailsaAPP/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'

Caused by:
Gem::LoadError: can't activate sqlite3 (~> 1.3.6), already activated sqlite3-1.4.0. Make sure all dependencies are added to Gemfile.
/home/juan/odin_on_rails/RailsaAPP/bin/rails:9:in `<top (required)>'
/home/juan/odin_on_rails/RailsaAPP/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => db:migrate => db:load_config
(See full trace by running task with --trace)

El problema está causado por Active Record, que tiene una restricción de versión en la gema sqlite3. Por ejemplo, en el caso de Rails 5.2.2 (la última versión estable en el momento en que escribo esta respuesta) es ~> 1.3.6 . Sin embargo, esta restricción no se especifica en gemspec, sino en un archivo fuente que contiene la clase de adaptador . Como consecuencia, Bundler no lo sabe e instala la versión 1.4.0 de la gema sqlite3, que es un conflicto.

La buena noticia es que la solución ya se ha fusionado en las ramas maestra y de mantenimiento de Rails 5.2 (y posiblemente en otras), y debería incluirse en 5.2.3.

Por ahora, puedes hacer una de las siguientes:

  • Agregue la restricción sqlite3 a su Gemfile: gem 'sqlite3', '~> 1.3.6'
  • Instale el registro activo de una rama llamada 5-2-stable .

Ninguna de las soluciones funcionó para mí, así que rastreé el error y localicé los adaptadores de conexión

Ubicación:

C:\Ruby\lib\ruby\gems\2.5.0\gems\activerecord-5.2.2\lib\active_record\connection_adapters\

Expediente:

sqlite3_adapter.rb

cambiado

gem "sqlite3", "~> 1.3.6"

a

gem "sqlite3", "~> 1.4.0"

Actualicé mi página web y todo funciona !!!

Mi env

Windows 10
Ruby : 2.5.3-p105
Rails: 5.2.2

Resolví este error configurando la versión de sqlite3 en el Gemfile de esta manera:

gem 'sqlite3', '~> 1.3', '< 1.4'

Parece que sqlite3-1.3.6 no funciona bien y sqlite3-1.4 todavía no es compatible, por lo que (la línea que sugiero corregir para este problema) descargará la última versión 1.3. En mi caso es el sqlite3-1.3.11.

Estoy usando rails-5.0.0 y ruby-2.5.1 en mi proyecto.


Tuve un problema similar hoy. Esto es lo que funcionó para mí. Intenté usar el enfoque de Michael pero recibí un error similar.

Así que en lugar de eso, eliminé la gema que pensé que me estaba dando un error, al gem uninstall sqlite3 -v 1.4.0

y en su lugar, utilizado en mi archivo gema. gem 'sqlite3', '~> 1.3.6' Corrí la bundle update del bundle update y funcionó como un encanto para mí.