Gemfile에 추가 할 각 항목에 대해 gem 버전을 지정해야하는지 여부를 알고 싶습니다. 몇 가지 프로젝트가 있었지만 이전에는 모든 보석에 대한 버전을 지정하지 않았고 번들러 (Bundler)가 관리 했으므로 잘 작동했습니다.Gemfile에 강제적으로 Gemfile 버전을 지정할지 여부는 레일 응용 프로그램에 대해
하지만 최근에 나는 지난 6 개월 동안 개발중인 프로젝트가 거의 없었습니다. 그 프로젝트에서 많은 보석 버전이 Gemfile에서만 지정되었고 Gemfile.lock은 무시되었습니다. 이로 인해 마침내 버전 충돌이 해결되고 몇 가지 보석이 업그레이드되었습니다. 예후에 의해 좋은 기사 - -
는 또한 응용 프로그램 버전 컨트롤에서 Gemfile.lock을 제거하는 나쁜 관행이 있다고 알고있어 http://yehudakatz.com/2010/12/16/clarifying-the-roles-of-the-gemspec-and-gemfile/그래서, 내 질문은 내가 Gemfile에에서 지정할 각각의 모든 보석의 버전을 지정해야합니다입니다 또는 이름을 지정하고 번들러가 버전을 관리 할 것인가? 이것을 처리하는 가장 좋은 방법은 무엇입니까? 모든 개발자가 보석의 동일한 버전을 가져야한다 -
UPDATE - 제대로 Gemfile sovles 많은 문제 :
PROB 1로 문제를 지정하려면이 질문을 업데이트
. 사실 Gemfile.lock을 버전 관리에 추가하면이 문제가 해결되었습니다. 개발자는 버전을 업데이트하기 때문에 '번들 설치'/ '번들'대신 '번들 업데이트'가 실행되도록주의해야합니다.
Prob 2 - 일부 보석 버전이 변경되면 브레이크 응용 프로그램 코드가 변경됩니다. 사실 omniauth를 사용하면 API가 한 버전에서 다른 버전으로 변경되므로 이러한 유형의 문제가 있습니다. 그리고 네, 응용 프로그램을 계속 사용하려면 버전을이 보석에 지정해야합니다.
내 Prob. - 그래서 내 gemfile에서 A와 B의 버전이 모두 엄격하게 지정되어 있고 종속성이있는 다른 버전의 Z에 의존하기 때문에 번들 설치 또는 번들 업데이트를 실행할 수 없습니다. 유일한 해결책은 버전을 제거하고 번들러가 전화를 걸도록하는 것이 었습니다. 그래서 내가 같은 질문을했습니다 - Gemfile.version_specification_mandatory? # => true/false
좋은 질문입니다. 이것도 내 호기심에 대답, 나는 보석 버전을 지정했습니다! – fregas