답변:
사용하는 bundle exec
것이 올바른 방법입니다.
기본적으로 일어나는 일은 레이크를 0.9.2로 업데이트하여 Gemfile에 지정된 버전과 충돌한다는 것입니다. 이전의 최신 버전은 rake
Gemfile의 버전과 일치했기 때문에 단순히 사용할 때 경고가 표시되지 않았습니다 rake
.
Yehuda Katz (원래 번 들러 개발자 중 하나)는 이 블로그 게시물에서이 모든 것을 설명합니다 .
bundle exec ...
항상 입력 하는 것을 피하기 위해 Bundler에서 일반적으로 사용하는 명령에 대해 쉘에서 별명 또는 함수를 설정할 수 있습니다. 예를 들어 이것은 레이크에 사용하는 것입니다.
$ type bake
bake is a function
bake ()
{
bundle exec rake "$@"
}
현재 버전 의 레이크 (또는 다른 gem이 문제를 일으키는 것) 를 유지할 이유가 있다면 , 매트 가 맞습니다 bundle exec
. 이것을 수행하는 가장 좋은 방법은을 실행하는 것 입니다. 설치 한 최신 버전의 gem을 사용하는 대신 Gemfile에 지정된 버전을 사용합니다. (nathan.f77은 레이크를 실행할 때마다 입력하지 않으려는 경우 아래에 좋은 해결책이 있습니다bundle exec
)
그렇지 않으면 레이크를 업데이트하지 않을 이유가없는 경우 다음을 실행할 수 있습니다.
bundle update rake
이것은 실제로 Gemfile.lock을 업데이트하여 실행하는 대신 최신 버전의 레이크를 사용합니다. bundle exec
매번 .
참고 : 이 명령을 실행하면 bundle update
갈퀴 대신 Gemfile의 모든 gem이 업데이트됩니다. 어쩌면 원하는 것이 아닐 수도 있습니다. 응용 프로그램에서 문제가 발생하면 어떤 gem 업데이트가 원인인지 알 수 없기 때문입니다.
사용하지 않고 이전 버전을 유지하는 덜 권장되는 방법 bundle exec
은 최신 버전의 레이크를 제거하는 것입니다.
$ gem 제거 레이크 제거 할 gem을 선택하십시오. 1. 갈퀴 -0.8.7 2. 갈퀴 -0.9.2 3. 모든 버전 > 2 rake-0.9.2를 성공적으로 제거했습니다
이것은 작동하지만 다른 버전의 레이크를 사용하는 여러 응용 프로그램을 사용하는 경우 다른 버전을 지속적으로 설치하고 제거해야하기 때문에 어려움을 겪을 수 있습니다.
gem install rake
. 그런 다음 gem uninstall rake
0.9.2를 선택했습니다.
bundle update
사용 가능한 최신 버전으로 버전이 지정되지 않은 gem도 업데이트합니다. 그것은 당신이 원하는 것이 아닐 수도 있습니다. bundle update rake
더 많은 우세가 될 것입니다.
public_suffix
아니라 rake
. bundle update public_suffix
불행히도 달리기 는 효과가 없습니다.
bundle exec
정확하지만 매번 입력하고 싶지는 않습니다.
이것을 .bashrc에 넣을 수 있습니다.
# Automatically invoke bundler for rake, if necessary.
rake() { if [ -e ./Gemfile.lock ]; then bundle exec rake "$@"; else /usr/bin/env rake "$@"; fi; }