2012-08-13 4 views
2

이전에 Rails 프로젝트 용 Gemfile에서 보석 버전을 변경했습니다. 번들러 업데이트 gemname을 실행했는데, 이것은 몇 가지 종속성의 최신 버전을 설치했습니다.보석을 다운 그레이드 할 때 bundler가 자동으로 보석의 종속성을 다운 그레이드 할 수 있습니까?

이제 보석의 구버전으로 다운 그레이드해야합니다. 내 Gemfile에서 버전을 다시 변경하고 번들러 업그레이드 gemname을 다시 실행하면 (그리고 번들러는 좋은 방법으로 설치됩니다.)하지만 이전에 업그레이드 된 보석 (종속성)은 여전히 ​​최신 버전입니다 (필자가 추측 한 보석 버전을 지정하지 않았으므로 가장 최신의 것을 사용하고 있습니까?).

이러한 종속성을 업그레이드하기 전에 원래 위치로 다시 다운 그레이드 할 수 있습니까?

답변

2

종속 보석이 그것을 지정하지 않으면 Bundler는 종속 보석의 최대 버전을 알 수 없습니다. 다운 그레이드가 실제로 의존성을 변경하지 않는 한, 유일한 실제 옵션은 버전 제어에서 gemfile.lock의 이전 버전을 체크 아웃하는 것입니다. 그렇지 않다면, 당신이하려는 일을 할 수 없습니다. Bundler는 gemfile.lock을 존중합니다. gemfile.lock은 다운 그레이드 할 때 보석의 의존성이 변경되지 않는 한 변경되지 않습니다.

3

Gemfile에 필요한 버전 번호와 함께 종속 보석을 지정할 수 있습니다. 이렇게하면 bundler가 종속성을 다시 평가하고 필요에 따라 다운 그레이드 할 수 있습니다. 이상적이지는 않지만 버전이 나간 후에는 지정된 보석을 제거 할 수 있습니다.

0

나는 이것을 주석으로 추가했지만 내 평판 때문에 할 수 없으므로 누군가가 유용하다고 생각하기를 바랍니다.

나는 또한 nmott을 제안했다. 그냥, 당신의 Gemfile에 예컨대을 종속성을 추가 : gem 'gem-name', '~> 1.5.0'

과 의존성이 다운 그레이드됩니다 때 다음 bundle update gem-name

을 실행 Gemfile에서 줄을 제거하고 원래이었다로 유지.

관련 문제