복붙노트

[RUBY-ON-RAILS] 어떻게 RVM은 어떻게 실제로 일을 rbenv?

RUBY-ON-RAILS

어떻게 RVM은 어떻게 실제로 일을 rbenv?

나는 어떻게 RVM 및 rbenv 실제로 작업에 관심이 있어요.

분명히 그들은 루비와 gemsets의 다른 버전 사이에 교환,하지만 어떻게이 달성된다? 나는 그들이 단순히 심볼릭 링크를 업데이트 한 가정했지만, 코드로 탐구 한 (그리고 나는 배쉬의 내 지식은 피상적이다 인정해야한다) 그들은 더 많은 이것보다 일을 한 것으로 나타났습니다.

해결법

  1. ==============================

    1.짧은 설명 : 사용자 환경의 PATH에 후킹하여 rbenv 작품. 개념은 간단하지만, 악마는 세부 사항에; 아래의 전체 특 종.

    짧은 설명 : 사용자 환경의 PATH에 후킹하여 rbenv 작품. 개념은 간단하지만, 악마는 세부 사항에; 아래의 전체 특 종.

    첫째, rbenv 루비의 설치된 모든 버전에서 모든 명령 (루비, IRB, 레이크, 보석 등)에 대한 심을 만듭니다. 이 과정은 재해 싱 (rehashing)이라고합니다. 때마다 당신은 루비의 새 버전을 설치하거나 확인 새로운 명령이 shimmed되어 있는지 확인하는 명령을 실행 rbenv의 재탕을 제공하는 보석을 설치합니다.

    이 심은 하나의 디렉토리 (기본적으로 ~이 / .rbenv / 심)에 살고 있습니다. rbenv를 사용하려면, 당신은 단지 당신의 PATH의 전면에 심 디렉토리를 추가 할 필요 :

    export PATH="$HOME/.rbenv/shims:$PATH"
    

    그런 다음 명령 줄에서 루비 실행하거나 언제든지 누구의 오두막 #을 읽는 스크립트를 실행!는 / usr / 빈 / ENV 루비, 운영 체제는 ~ / .rbenv / 심 / 루비 먼저 찾아 다른 루비 대신 실행됩니다 실행 파일이 설치되어있을 수 있습니다.

    각 심 차례로 실행이 간부 rbenv하는 작은 배쉬 스크립트입니다. 그래서 당신의 경로에 rbenv와 함께, IRB는 "박았 42"rbenv 간부 IRB에 해당하고, 루비 -e rbenv 간부 루비 -e "풋 (42)"에 해당합니다.

    사용하려는 루비의 버전을 밖으로 rbenv exec 명령 수치는, 그 버전에 해당 명령을 실행합니다. 방법은 다음과 같습니다

    (당신은 현재 디렉토리에 .rbenv 버전의 파일을 생성 rbenv 지역 명령과 프로젝트 별 루비 버전을 설정할 수 있습니다. 마찬가지로, rbenv 글로벌 명령 수정합니다 ~ / .rbenv / 버전 파일을.)

    RBENV_VERSION 환경 변수로 무장, rbenv는 임원, 당신의 PATH의 전면에 명령 rbenv 간부에게 전달 된 인수를 ~ / .rbenv / 버전 / $ RBENV_VERSION / 빈을 추가합니다. 짜잔!

    후드 아래에 일이 정확히 무엇에 철저한보기를 들어, RBENV_DEBUG = 1을 설정하고 루비 명령을 실행 해보십시오. rbenv 실행이 터미널에 기록됩니다 모든 배쉬 명령.

    이제 rbenv 단지 전환 버전과 관련되어 있지만, 플러그인의 번성 에코 시스템은 당신이 당신의 환경을 설정 "gemsets"를 관리하고 심지어 번들 간부를 자동화에 루비를 설치하는 모든 작업을 수행하는 데 도움이됩니다.

    나는 확신 IRC 지원 루비 버전 전환과 관련이있다, 그리고 rbenv이 지원을 필요로하지 않는 단순하고 이해하기 충분하도록 설계되어 어떤 아닙니다. 그러나 혹시, 이슈 트래커를 도움을 필요로하고 트위터는 단 몇 번의 클릭 거리에 있습니다해야한다.

    공개 : 나는 rbenv, 루비 구축하고,의 저자 rbenv - 바르.

  2. ==============================

    2.내가 심층 기사를 쓴 : http://niczsoft.com/2011/11/what-you-should-know-about-rbenv-and-rvm/

    내가 심층 기사를 쓴 : http://niczsoft.com/2011/11/what-you-should-know-about-rbenv-and-rvm/

    기본적인 차이는 쉘 환경이 변경되는 경우는 다음과 같습니다

    또한, RVM은 대한 것은, 그것이 다른 어떤 도구보다 많이 가지고, 단지 루비를 관리하는 더 후 많이 커버 (다른 사람이 RVM 및 rbenv에서 떨어져있다 : https://twitter.com/#!/mpapis/ 상태 / 171714447910502401)

    당신은 Freenode의 서버에 "#rvm"채널 IRC에 도착 즉시 지원에 대해 잊지 마세요.

  3. ==============================

    3.루비 버전이 선택되면 그래서 위의 우수한 응답을 요약, 및 RVM rbenv 사이의 주요 차이는 실질적이다.

    루비 버전이 선택되면 그래서 위의 우수한 응답을 요약, 및 RVM rbenv 사이의 주요 차이는 실질적이다.

    rbenv :

    rbenv는 경로, 루비와 같은 이름으로 명령의 시작에 심 (shim)을 추가합니다. 당신은 (그것은 또한 "루비"라고하며 경로에 먼저 때문에) 심 대신에 실행되는 명령 줄에서 루비를 입력합니다. 환경 변수 또는 .rbenv_version 파일의 심 모습은 루비의 버전에 위임하도록 지시합니다.

    RVM :

    RVM은 직접 RVM 사용을 호출하여 루비의 버전을 설정할 수 있습니다. 또한, 그것은 또한 CD 시스템 명령을 무시합니다. 때 .rvmrc 파일이 들어있는 폴더에이 CD의 .rvmrc 파일 내부의 코드가 실행된다. 이것은 루비 버전, 또는 다른 어떤 당신 공상을 설정하는 데 사용할 수 있습니다.

    다른 차이 :

    물론 다른 차이가 있습니다. rbenv 더 (하지만별로) 해킹 조금을 요구하면서 RVM은 상자 밖으로 gemsets있다. 둘 다 문제에 대한 기능 솔루션입니다.

  4. ==============================

    4.가장 큰 차이점은 언제, 어떻게 루비가 전환 될 것으로 보인다. 루비 전환된다 :

    가장 큰 차이점은 언제, 어떻게 루비가 전환 될 것으로 보인다. 루비 전환된다 :

    RVM은 수정 된 cd 명령 및 RVM 사용하여 루비의 수동 선택에 의존한다. rbenv 기본 메커니즘으로 모든 기본 루비 명령에 대한 사용 래퍼 또는 "심"은 루비를 선택합니다. RVM도, 보석, 레이크, 루비와 같은 기본 명령 줄 도구에 대해 래퍼를 생성합니다. 그들은 CronJobs (http://rvm.io/integration/cron/ 참조) 예를 들어 사용되지만 그들은 루비 버전을 전환 할 수있는 기본 메커니즘 없습니다.

    따라서 두 가지 방법은 "자동으로"명령을 덮어 쓰기와 래퍼를 사용하여 올바른 루비 버전을 선택합니다. RVM 재정의 CD 같은 명령을 쉘. rbenv 재정의 모든 기본 루비 루비, IRB, 레이크와 보석 같은 명령 등.

  5. ==============================

    5.

    rvm system
    env > before
    rvm jruby # or whatever
    env > after
    diff after before
    

    약을 제공합니다 :

    < GEM_HOME=$HOME/.gem/ruby/1.9.1
    ---
    > GEM_HOME=$HOME/.rvm/gems/jruby-1.6.6
    < GEM_PATH=$HOME/.gem/ruby/1.9.1
    ---
    > GEM_PATH=$HOME/.rvm/gems/jruby-1.6.6:$HOME/.rvm/gems/jruby-1.6.6@global
    *bunch of rvm_*
    > MY_RUBY_HOME=$HOME/.rvm/rubies/jruby-1.6.6
    > RUBY_VERSION=jruby-1.6.6
    > IRBRC=$HOME/.rvm/rubies/jruby-1.6.6/.irbrc
    

    그리고 그것은 앞에 추가합니다 :

    $HOME/.rvm/gems/jruby-1.6.6/bin:$HOME/.rvm/gems/jruby-1.6.6@global/bin
    

    $ 파스

  6. from https://stackoverflow.com/questions/9394338/how-do-rvm-and-rbenv-actually-work by cc-by-sa and MIT license