이미 0.9.0 레이크를 활성화했지만 Gemfile에는 0.8.7 레이크가 필요합니다.


124

Rails 프로젝트를 실행하려고합니다.

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

내가 할 경우 : "번들 설치"

그러나 나는 얻고있다

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

하는 동안

rake db:migrate

답변:


245

먼저 Gemfile에 rake가 언급되어 있는지 확인하십시오. 그렇지 않은 경우 추가하고 "이미 활성화 한"버전을 지정하십시오.

그런 다음 번들에 앱에 사용중인 레이크 버전을 업데이트하도록 알려야합니다.

bundle update rake

당신을 Gemfile.lock위해 업데이트 됩니다.


2
이것은 나를 위해 작동하지 않았습니다. 이 명령을 실행하면 '번들 설치'와 정확히 동일한 작업을 수행하며 동일한 레이크 버전을 사용하고 있음을 보여줍니다. 업데이트하지 않습니다.
EE33 2011

5
gemfile에 gem 'rake', 'version #'을 추가하고 gemfile.lock이 올바르게 업데이트되도록 'bundle update rake'를 실행해야했습니다. 이 솔루션을 사용할 수없는 사람을 위해 참고하십시오.
EE33 2011

44

현재 다음과 같은 rake 명령을 사용하고있는 곳

rake db:migrate

대신 사용 :

bundle exec rake db:migrate

이것은 최신 버전의 레일 및 / 또는 레이크가 함께 잘 작동 할 때까지 적용됩니다.


3
함께 잘 작동하는 "최신 버전의 레일 및 / 또는 갈퀴"에 대한 내용은 특정 시점에서 사용중인 작업 흐름에 대한 특정 가정 하에서 만 의미가 있습니다. 나는 이것이 의미하는 바가 "당신은 블리딩 에지 ​​레일을 사용하고 있고 레이크가 아직 따라 잡지 않았다"고 생각합니다. 그러나이 경우는 "bundle exec"또는 "edit Gemfile"접근 방식으로도 해결할 수 있으며, 이러한 접근 방식은 본질적인 호환성 문제가없고 혼란스러운 워크 플로 기록 만있는 경우에도 문제를 해결합니다.
jackr

24

Dobry Den에게 감사합니다, 친구. 하지만 조금 더해야했습니다. 여기에 해결책이 있습니다 (나에게 적합합니다). 나는 추가했다

gem 'rake','0.8.7'

거기에 없었던 Gemfile에 있지만 새 버전의 레일은 자동으로 rake (0.9.0)를 설치합니다.

rake0.9.0을 삭제 gem uninstall rake 한 후를 수행 한 후 bundle update rake데이터베이스를 만들고 마이그레이션 할 수 있습니다.



7

Gemfile에서 원하는 버전을 지정하십시오.

gem 'rake', '0.9.0' 

그때

bundle update rake

rake 작업을 실행하려면 bundle exec를 사용해야합니다.

bundle exec rake db:migrate

최신 버전을 "활성화 해제"하지 않는 것 같습니다. Rake를 완전히 제거하고 다시 설치하면 작동합니다.
JosephK

6

오보세요, 미래입니다. 저에게는 0.9.5를 원할 때 레이크 10.x가 설치되어 있다고 불평했습니다. 확실하지는 않지만 Ruby에 익숙하지 않아서 최근 버전 번호에 무슨 일이 일어 났는지 조사했지만 제가 한 일은 다음과 같습니다.

gem uninstall rake
gem install rake -v 0.9.5

시스템이 앱이 원하는 레이크 버전을 설치하도록 강제합니다 (저에게는 Octopress였습니다).


2
미래가 불렀고 해머 팬츠를 빌리려고합니다.
키스 LAYNE

안녕하세요, 또 미래입니다. 드디어 해머 팬츠가 컴백한다고 들었어요.
하위 숫자

5

나는 (갈퀴가 아닌 다른 보석과 함께)이 문제가 있었고 다음으로 해결할 수있었습니다.

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

bundle install
bundle update

'sudo'키워드는 사용되지 않았습니다 (예 : sudo 번들 설치). Rails 앱이 검색하지 않을 수있는 디렉토리에 gem을 배치 할 수 있습니다.


3

요청하지 않은 내용을 이해하면 Gemfile파일 을 열고 줄을 변경해야합니다.

gem 'rake', '0.8.7'

...에...

gem 'rake', '0.9.0'

0.9 대신 0.8.7을 사용하려면 어떻게해야합니까?
Kir

6
rake gem은 Rails 종속성이기 때문에 기본적으로 Gemfile에 지정되지 않습니다. rake gem을 0.9.0으로 업데이트 한 경우 시스템에 여전히 0.8.7 gem이 있습니다 (으로 확인 gem list). gem 'rake', '0.8.7'에서 여전히 지정되어 있다면 Gemfile.lock0.8.7 gem을 문제없이 사용할 것입니다. 그렇지 않은 경우 Gemfile (.lock이 아님)에 bundle추가 한 후 실행 하여 gem 'rake', '~> 0.8.7'아무 내용이 없는지 확인하십시오.
danneu

@Dobry Den에 동의합니다.
Olivier L.

gem 'rake'가 정의되지 않았습니다. 여러 개의 Gem Rake (0.8.7 및 0.9.0)가있는 경우 기본값을 사용합니다. 기본값을 이전 버전으로 설정할 수 있습니까?
Mujah Maskey

3

이것을 Gemfile에 추가하십시오

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

그런 다음 rake-0.9.0 을 제거하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.