ruby-on-rails - update - sqlite ruby




não pode ativar o sqlite3(~> 1.3.6), já ativado sqlite3-1.4.0 (4)

Eu resolvi este erro configurando a versão do sqlite3 no Gemfile assim:

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

Parece que o sqlite3-1.3.6 não está funcionando bem e o sqlite3-1.4 ainda não é suportado, então (a linha que sugiro corrigir para este problema) fará o download da última versão 1.3. No meu caso, é o sqlite3-1.3.11.

Eu estou usando rails-5.0.0 e ruby-2.5.1 no meu projeto.

Estou usando o Ubuntu e me deparo com um problema ao usar o db: migrate for ruby ​​project.

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)

Eu tive um problema semelhante hoje. Aqui está o que funcionou para mim. Eu tentei usar a abordagem de Michael, mas recebi um erro semelhante.

Então, em vez disso, eu removi a gem que eu pensei que estava me dando um erro, por gem uninstall sqlite3 -v 1.4.0

e, em vez disso, usado no meu arquivo gem. gem 'sqlite3', '~> 1.3.6' Fiz a bundle update do bundle update e funcionou como um encanto para mim.


O problema é causado pelo Active Record que possui restrição de versão em gem sqlite3. Por exemplo, no caso do Rails 5.2.2 (última versão estável no momento em que escrevo esta resposta), é ~> 1.3.6 . No entanto, essa restrição não é especificada no gemspec, mas em um arquivo de origem que contém a classe do adaptador . Como consequência, o Bundler não tem conhecimento disso e instala o sqlite3 gem versão 1.4.0, que é conflitante.

A boa notícia é que a correção já foi mesclada em ramificações mestre e de manutenção do Rails 5.2 (e possivelmente outras), e deve ser incluída em 5.2.3.

Por enquanto, você pode fazer o seguinte:

  • Adicione a restrição sqlite3 ao seu Gemfile: gem 'sqlite3', '~> 1.3.6'
  • Instale o Active Record de uma ramificação chamada 5-2-stable .

Parece que a versão sqlite3 no sistema é diferente daquela instalada no aplicativo. Nesse caso, você pode atualizar uma versão gem para seu aplicativo:

bundle update sqlite3

Ou altere a versão gem no Gemfile:

gem 'sqlite3', '~> 1.4'