이미 X를 활성화했지만 Gem 파일에는 Y가 필요합니다.
을 할 때rake다음 오류가 발생했습니다.
이미 레이크 0.9.2를 활성화했지만 Gem 파일에는 레이크 0.8.7이 필요합니다. 번들 Exec을 사용하는 것이 좋습니다.
용사를 합니다.bundle exec rake단순한 의대에 rake효과가 있는 것처럼 보이지만, 이것을 고치는 가장 좋은 방법은 무엇입니까?
ㅠㅠbundle clean --force
이 번들에 포함되지 않은 모든 시스템 보석을 제거합니다.
용사를 합니다.bundle exec 이것을 하는 올바른 방법입니다.
기본적으로 당신은 레이크를 0.9.2로 업데이트했고, 이것은 현재 당신의 젬 파일에 지정된 버전과 충돌합니다.의 전이버최버전신전의.rake당신은 당신의 젬 파일의 버전과 일치했기 때문에 단순히 사용할 때 어떤 경고도 받지 않았습니다.rake.
Yehuda Katz(원래 번들러 개발자 중 한 명)는 이 블로그 게시물에서 이 모든 것을 설명합니다.
입하지않 려면으력을 .bundle exec ...항상 번들러와 함께 일반적으로 사용하는 명령에 대한 별칭 또는 함수를 셸에 설정할 수 있습니다.예를 들어 Rake에 사용하는 것은 다음과 같습니다.
$ type bake
bake is a function
bake ()
{
bundle exec rake "$@"
}
레이크의 현재 버전(또는 문제의 원인이 되는 다른 보석)을 유지해야 하는 이유가 있다면 매트가 맞습니다. 이를 위한 최선의 방법은 실행하는 것입니다.bundle exec설치한 최신 버전의 보석 대신 Gem 파일에 지정된 버전을 사용합니다.(rake를 실행할 때마다 입력하지 않으려면 아래에 좋은 솔루션이 있습니다.)
그렇지 않으면 레이크를 업데이트하지 않을 이유가 없으면 실행할 수 있습니다.
bundle update rake
의 레이크를 하도록 Gemfile됩니다.bundle exec매회
참고: 그냥 실행하는 경우bundle update이것은 단지 갈퀴 대신 젬 파일의 모든 보석을 업데이트할 것이며, 이것은 아마도 당신이 원하는 것이 아닐 것입니다. 왜냐하면 만약 당신의 애플리케이션에서 무언가가 깨지면 당신은 어떤 보석 업데이트가 그것을 야기했는지 알 수 없기 때문입니다.
이전 버전을 덜 이 유 권 지 되 않 는 장 는 하 지 지 사 않 용 고 을 버 전 전 ▁the 법 방 ▁to 는 않 ▁the ▁version ▁without ▁lessbundle exec새로운 버전의 레이크를 제거하는 것입니다.
보석 제거 갈퀴 제거할 보석 선택: 갈퀴-0.8.7 갈퀴-0.9.2 모든 버전> 2레이크 제거 성공-0.9.2
이 방법은 사용할 수 있지만 다른 버전의 레이크를 사용하는 여러 앱을 사용하는 경우에는 다른 버전을 계속 설치하고 제거해야 하므로 문제가 될 수 있습니다.
지난번에 저에게 이런 일이 발생했을 때, 저는 제 모든 보석을 업데이트했습니다.나는 했습니다.gem uninstall rake버전 옵션을 나열했습니다.저는 새로운 것을 선택했고, 그리고 나서 저는 사용할 필요가 없었습니다.bundle exec더이상.
기본적으로, 만약 당신이bundle exec번들에 설치된 모든 Gem 버전을 사용하므로 Gem 파일에 있는 내용을 사용합니다.없이.bundle exec시스템 기본 버전을 사용합니다.
오! Katz 기사는 훌륭합니다!
이 솔루션이 가장 마음에 듭니다.
bundle install --binstubs
이제 입력할 수 있습니다.
bin/rake .stuff.
저처럼 2.3과 3.0.9 앱을 모두 개발하고 있는 사람에게는, 이것이 저를 훨씬 더 낫게 합니다.
bundle exec맞아요, 하지만 매번 타이핑하고 싶지는 않을 거예요.
이것을 당신의 안에 넣을 수 있습니다..bashrc또는.zshrc:
# Automatically invoke bundler for rake, if necessary.
rake() { if [ -e ./Gemfile.lock ]; then bundle exec rake "$@"; else /usr/bin/env rake "$@"; fi; }
방금 사용한 내용:bundle update
저의 경우, Gemfile.lock 파일에 대한 종속성 버전 문제를 해결했고, 패키지를 최신 버전으로 업데이트했습니다.
Gemfile.lock 파일을 삭제하고 실행하는 것이 좋습니다.bundle install아니면 그냥bundle다시 시도합니다.
이것은 Gemfile과 Gemfile.lock에 다른 버전이 있을 때 발생합니다. 제 경우 Gemfile.lock에 strscan(3.0.3)과 Gemfile에 루비 3.0.4가 있습니다. Gemfile.lock을 삭제하고 번들 설치 또는 번들 업데이트를 실행하십시오.
때때로 어떤 이유로 최신 버전의 보석을 설치해야 합니다.
때로는 이전 버전을 기반으로 이전 프로젝트를 실행해야 하는 경우도 있습니다.
때때로, 그러한 문제들을 해결하는 가장 빠른 방법은 삭제하는 것입니다.Gemfile.lock그리고 실행bundle exec 그면새데생니다성됩가터가 됩니다.Gemfile.lock우리가 실제로 설치한 보석으로.
모든 것이 올바르게 작동하는 경우 이 방법이 가장 쉽습니다.
매번 입력하지 않는 또 다른 방법은 예를 들어 Makefile을 사용하는 것입니다.
rake :
bundle exec rake
오류는 이미 여기서 수행할 작업을 나타냅니다. Gem 파일에 레이크 0.8.7이 필요하지만 다른 레이크 버전은 이미 활성화되어 있습니다.그래서 사용합니다.
gem list
모든 Gem 파일을 나열하는 명령입니다.그런 다음 삭제할 gem 파일을 확인합니다.당신의 경우 레이크 0.9.2입니다. 폴더로 이동하여 삭제합니다.
cd /var/lib/gems/3.0.0/gems
원하는 폴더를 삭제합니다.그런 다음 이 명령으로 보석을 업데이트합니다.
bundle update
언급URL : https://stackoverflow.com/questions/6317980/you-have-already-activated-x-but-your-gemfile-requires-y
'programing' 카테고리의 다른 글
| Android XML 그리기 가능 파일에서 원 모양을 정의하는 방법은 무엇입니까? (0) | 2023.06.02 |
|---|---|
| Git 체크아웃 이중 대시의 의미 (0) | 2023.06.02 |
| Postgres ENUM 데이터 유형 또는 CHECK CONSTARINT? (0) | 2023.06.02 |
| Android에서 '컨텍스트'란 무엇입니까? (0) | 2023.06.02 |
| RSpec에서 모듈 테스트 (0) | 2023.06.02 |