Você já ativou o rake 0.9.0, mas seu Gemfile requer o rake 0.8.7


124

Estou tentando rodar projeto rails, recebo

Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

Se eu fizer: "instalação de pacote configurável"

mas estou recebendo

You have already activated rake 0.9.0, but your Gemfile requires rake 0.8.7

enquanto faz

rake db:migrate

Respostas:


245

Primeiro, verifique se o rake é mencionado no seu Gemfile. Caso contrário, adicione-o e especifique a versão "você já ativou".

Em seguida, você precisará informar o bundle para atualizar a versão do rake usada no seu aplicativo:

bundle update rake

Ele atualizará o seu Gemfile.lockpara você.


2
isso não funcionou para mim. Quando executo esse comando, ele faz exatamente a mesma coisa que 'instalação do pacote' e mostra que está usando a mesma versão do rake. Não atualiza.
— EE33

5
Eu tive que adicionar gem 'rake', 'versão #' ao meu gemfile e executar 'bundle update rake' para que o meu gemfile.lock fosse atualizado corretamente. Para sua informação, para qualquer um que não conseguisse que essa solução funcionasse para eles.
— EE33

44

Onde você está atualmente usando comandos rake como

rake db:migrate

Use isso:

bundle exec rake db:migrate

este será o caso até que a versão mais recente dos trilhos e / ou rake funcionem bem juntos.


3
A parte sobre "a versão mais recente do Rails e / ou rake" funcionando bem em conjunto só tem significado em um momento específico, sem nome, no tempo e sob algumas suposições específicas sobre o fluxo de trabalho em uso. Eu acho que essa implicação é "você está usando trilhos de borda sangrenta e o rake ainda não o alcançou". Mas esse caso pode ser resolvido pelas abordagens "bundle exec" ou "edit Gemfile", e essas abordagens também resolvem o problema quando não há problemas intrínsecos de compatibilidade, mas apenas um histórico de fluxo de trabalho confuso.
— 12132 jackr

24

Agradeço a Dobry Den, felicidades, cara. mas pouco mais eu tinha que fazer. aqui está a solução (funciona para mim). Eu adicionei

gem 'rake','0.8.7'

no Gemfile, que não estava lá, mas minha nova versão do rails instala automaticamente o rake (0.9.0).

depois de excluir o rake0.9.0 gem uninstall rake e depois de fazer bundle update rake, posso criar e migrar o banco de dados.



7

Especifique a versão que você deseja no seu Gemfile.

gem 'rake', '0.9.0' 

então

bundle update rake

você precisa usar o bundle exec para executar sua tarefa de rake

bundle exec rake db:migrate

Parece não "desativar" a versão posterior. Porém, removendo o Rake completamente e reinstalando as obras.
— JosephK

6

Oh, olhe, é o futuro. Para mim, estava reclamando que eu tinha o rake 10.x instalado quando ele queria 0.9.5. Não tenho certeza, não estou familiarizado o suficiente com Ruby para realmente descobrir o que aconteceu com os números de versão recentes, mas o que eu fiz foi:

gem uninstall rake
gem install rake -v 0.9.5

forçar o sistema a instalar a versão do rake que o aplicativo queria (para mim era o Octopress).


2
O futuro chamou e ele quer emprestar suas calças Hammer.
— precisa

Olá, é o futuro novamente. Ouvi que as calças Hammer estão finalmente voltando.
— subdigit

5

Eu tive esse problema (com outra gema que não era rake) e consegui corrigi-lo

gem uninstall <complaining gem>
gem install <complaining gem>

bundle install
bundle update

Observe que a palavra-chave 'sudo' não foi usada (por exemplo, sudo bundle install), pois isso pode colocar sua gem em diretórios nos quais o aplicativo Rails pode não estar pesquisando.


3

Se eu entendo o que você não está perguntando, é necessário abrir seu Gemfilearquivo e alterar a linha ...

gem 'rake', '0.8.7'

...para...

gem 'rake', '0.9.0'

E se eu quiser usar 0.8.7 em vez de 0.9?
— 21411 Kir

6
a rake gem não é especificada no seu Gemfile por padrão, pois é uma dependência do Rails. se você atualizou a rake gem para 0.9.0, ainda possui a 0.8.7 no seu sistema (verifique com gem list). Tenho certeza de que, se gem 'rake', '0.8.7'ainda estiver especificado no seu Gemfile.lock, ainda usará a gema 0.8.7 sem nenhum problema. caso contrário, tente executar bundledepois de adicionar gem 'rake', '~> 0.8.7'ao seu Gemfile (não .lock) e veja se ele diz alguma coisa.
— Danneu 21/05

Eu concordo com @Dobry Den.
— Olivier L.

gem 'rake' não está definido. É necessário um padrão se eu tiver vários Gem Rake (0.8.7 e 0.9.0). Podemos tornar o padrão antigo?
— Mujah Maskey 25/05

3

Adicione isso ao seu Gemfile

# Rake 0.9.0 break Rails.
gem "rake", "!= 0.9.0"

E então desinstale o rake-0.9.0

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.