2011-04-28 2 views

답변

11

그들은 다른 용도로 사용됩니다. RVM은 Ruby 설치를 관리하기 위해 샌드 박스를 만듭니다. 그 일환으로 보석 세트를 정의 할 수도 있습니다.

번들러는 루비를 관리하지 않으며 현재 선택된 루비에서 작동합니다.

그래서 RVM을 개발 환경의 구성 관리자로, Bundler를 응용 프로그램의 젬 관리자로 생각해야합니다.


편집 : 추가 생각 - 우리가 RVM 사용 여부

, 일반적으로 우리는 모든을 위해, gem install blah를 사용하여, 우리는 손으로 응용 프로그램에 사용할거야 모든 보석을로드해야 할 것 우리가 사용하고 싶은 보석.

여러 루비에서 손으로 보석을 관리하게됩니다. 설치가 완료되면 RVM을 사용하여 보석 세트를 만들 수 있지만 RVM은 설치되지 않은 보석의 특정 버전을 자동으로 가져 오지 않으며 제거되지 않으면 다시 가져옵니다. RVM은 Ruby 환경에 더 관심이 있기 때문에 주로 보석의 버전을 gem과 우리에게 맡깁니다.

Bundler는 RVM에서 누락 된 부분에 대해주의를 기울입니다. bundler를위한 Gemfile을 생성 할 때, 필요한 보석과 특정 버전을 검색 할 것입니다. 따라서 다른 시스템에 Ruby 앱을 설치하는 작업이 훨씬 간단 해집니다.파일을 다른 컴퓨터로 밀어 넣은 다음 bundle install을 실행하면 나머지는 수행합니다.

Rails와 잘 작동하며 제작 파일을위한 합리적인 솔루션입니다. 동일한 호스트에서 Perl 응용 프로그램을 실행하려면 Perl 배포본을 처리해야하는 것보다 훨씬 간단합니다. 직접 귀하의 질문에 대답하려면

+0

+1, 맞습니다. 그리고 번들러가없는 레일 앱을 부팅 할 수 없으므로 요즘에는 멀리 가지 않을 것이라고 확신하지 못합니다. FYI로 각 루비 VM에 대해 번들러를 글로벌 보석 세트에 추가 할 수 있습니다. 그런 다음 vm 당 한 번만 설치됩니다. –

+0

Bundler가하는 일에 대해 좀더 깊이있게 설명하고 RVM의 보석 세트를 보완하거나 경쟁하는 방법을 설명하면 도움이 될 것입니다. – Phrogz

+0

@Phrogz, [rationale] (http://gembundler.com/rationale.html) 페이지는 좋은 개요입니다. 생산 코드에서 특히 여러 시스템에 있어야 할 때 매우 편리하다고 생각합니다. 우리가 전통적으로했던 것처럼 모든 보석을 관리해야하는 대신에, Gemfile과 bundler는 일관되게 그것을 할 것입니다. Rails 어플리케이션을 위해서입니다. 직장에서 Rails를 사용하지는 않지만 유틸리티 스크립트를 생성하므로 잘 작동합니다. –

2

번들러는 코드에서 의존성을 관리하는 도구입니다. 즉, 필요한 모든 보석을 관리하는 도구입니다. Gemfile에 지정한 모든 젬과 의존성이 시스템에 설치되어 있는지 확인합니다. 어떤 루비 버전을 사용하고 있는지 신경 쓰지 않고, 사용중인 인터프리터에 따라 보석을 설치합니다.

RVM은 여러 개의 루비를 실행하기위한 도구이며 이론적으로 여러 개의 보석 세트도 실행하는 도구입니다. 그것은 당신을위한 의존성을 전혀 처리하지 못합니다 - 보석을 설치하는 것은 당신에게 달려 있습니다.

내 경험에 비추어 볼 때 RVM을 처음 접했을 때 여러 개의 루비를 실행할 필요가 없거나 서로 충돌하는 다른 프로젝트에 설치해야하는 보석이 필요하지 않는 한 RVM을 사용하지 않으려 고합니다. . RVM을 사용하는 경우에도 Bundler를 사용하여 보석 종속성을 관리하면 사용중인 모든 코드 저장소에서 Gemfile을 추적 할 수 있습니다.

+1

RVM은 한 버전의 루비 만 실행하는 경우에도 세계에 밀고 자하는 코드에 대한 의존성을 확인하는 데 매우 편리합니다. 보석에 대한 개발 의존성은 공개하기 전에 테스트를 통해 이점을 얻는 좋은 예가 될 것입니다. –

+0

그래, 그게 좋은 지적이야, 그 마음에 계속 사용할 것입니다. – muffinista

3

RVM은 더 밀폐 유닛과 같습니다. Bundler는 응용 프로그램에서 요구하거나 라이프 사이클에서 사용하는 것 (다른 것들 중에서)의 명시 적 (종속성 관리자)과 같습니다.

레일에서 작업하는 경우 Bundler를 탈출 할 수 없습니다. 하지만 나는 항상 그것을 사용하여 내가 필요로 할 보석과 나중에 프로젝트에 참여할 다른 사람들을 알 수 있습니다.

RVM을 사용하면 루비를 분리 한 다음 루비/프로젝트로 추가 할 수 있습니다. 이 방법으로 나는 수많은 보석과 다른 버전을 하나의 파일로 가지고 있지 않습니다.

정확히 대부분의 액션 압축 답변은 아니지만 조금 도움이 되길 바랍니다.

3

...

Bundler를가 RVM은 을하지 않는 것이 무엇입니까?

Bunlder는 프로젝트 (번들러를 사용하고 모든 필요한 보석을 Gemfile에 지정)에 필요한 모든 보석을 설치합니다. RVM은 이것을하지 않습니다. 당신이 무엇을 보석 그룹을 지정할 수 있습니다 Gemfile을 사용

(예 : 개발, 테스트)를 ...

은 들러는 않지만 RVM하지 않는 이들 같은 많은 '작은'일들이 있습니다. 일반적으로 위의 좋은 사람들처럼 RVM은 bundler와는 다른 목표를 가지고 있습니다. 루비 런타임 관리에 대한 RVM, 번들러가 응용 프로그램의 종속적 인 보석 관리에 대한 것입니다.