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
Mujah Maskey
fonte

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ê.

danneu
fonte
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.

Preço de Floyd
fonte
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.

Mujah Maskey
fonte
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
hacksign
fonte
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).

subdigitar
fonte
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.

geleira
fonte
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'
Olivier L.
fonte
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


fonte