2011-04-09 2 views
22

디렉토리를 변경하고 .rvmrc을 찾고 현재 파일의 내용에 따라 현재 Ruby 버전과 gemset을 변경하면 RVM이 할 수있는 한 가지 사항이 있습니다. 이 디렉토리로 변경하면 그에 따라 메시지가 출력됩니다.디렉토리를 변경 한 경우 RVM은 어떻게 감지합니까?

현재 작업 디렉토리의 변경 사항을 어떻게 감지합니까? 나는이 일을하는 아주 원시적 인 방법을 상상할 수 있습니다 : 현재 사용자로 실행되는 데몬을 실행하고 pwd의 결과를 계속 확인하십시오. 그러나 그것이 그것이하는 것이 아니라고 확신합니다.

cd의 별칭을 사용하면 디렉토리를 변경할 수도 있지만 .rvmrc을 확인하고 지시가있는 경우 gemsets를 변경하십시오.

디렉토리를 변경하기위한 유닉스 시스템 훅이 있습니까, 아니면 RVM이 사용하고있는 다른 트릭이 있습니까?

+1

pwd는 사용자별로가 아니라 프로세스별로 있기 때문에 데몬이 작동하지 않을 것이라고 생각합니다. –

+0

@TomAnderson 절대적으로 맞습니다. 나는 그 개념에 대해 혼란스러워했다. :) –

+0

덧붙여서, 저는 chruby를 사용하고 있습니다. [zsh에서의 사용에 맞게 디렉토리 모니터링 동작을 사용자 정의했습니다] (http://nathanmlong.com/2015/01/optimizing-chruby-for-zsh/) –

답변

26

[RVM]은 현재 작업 디렉토리에서 변경 사항을 어떻게 감지합니까?

이것은 전적으로 셸 및 셸 버전에 따라 다릅니다. 이를 수행하는 가장 간단한 방법은 제안 된대로 동일한 이름의 함수를 정의하여 cd을 재정의하는 것입니다. cd 내장 함수를 호출해야합니다 또는 매우 고약하거나 매우 재미있는 부작용 (관점에 따라) 중 하나가 발생합니다.

cd() { 
    builtin cd $* 
    echo "Changed directories from '${OLDPWD}' to '${PWD}'." 
} 

파일을 텍스트 소스 파일이 배치 및 소싱함으로써 파일을 소싱 세션에이 사용자 정의 cd 기능을로드 할 수 있습니다.

wayneeseguin$ cd /tmp 
Changed directories from '/home/wayneeseguin' to '/tmp'. 

당신이 항상 사용자 계정 대화 형 쉘에 대한 유효하게하거나 ~/.bash_profile에 함수 정의를 배치 할 경우. 또는 함수를 저장 한 텍스트 파일의 소스를 ~/.bash_profile에서 가져올 수도 있습니다. Bash 매뉴얼에서 read more about Bash startup files을 사용할 수 있습니다.

The Ruby enVironment Manager (RVM)은 주로 Bash shell을 대상으로합니다.RVM은 ZSH shell에서 작동하며 cd 작업 이후에 함수 호출을 추가 할 수 있습니다. 이것은 지금까지이 작업을 해결하는 가장 좋은 방법입니다. 그래서, 쉘이 그것을 허용한다면, 꼭이 방법을 사용하십시오. RVM 않습니다.

광범위한 예제의 경우 look at RVM's cd functionality on GitHub 수 있습니다.

RVM은이 기능을 사용하여 per-project (directory, really) .rvmrc files을로드하고 다양한 후크를 구성 할 수있는 기능을 사용자에게 제공합니다. RVM's hooks on the documentation website에 대한 자세한 내용을 볼 수 있습니다.

+0

에이 작업이 자동으로 수행되었습니다. 내 질문에 답변 해 주셔서 감사합니다. –

0

gemset의 내용을 해결해야 할 때마다 현재 디렉토리를보고 있습니까? 디렉토리가 필요에 따라 변경되는 것과 병행하여이를 수행하고 있다고 생각하게하는 항목이 있습니까? 당신이 RVM을 설치하면

+0

나는 내 질문을 명확히했다.'.rvmrc'를 사용하는 프로젝트 디렉토리로 변경하자마자, 현재 Ruby 버전과 gemset을 변경하고 현재 사용중인 것을 나타내는 메시지를 출력한다. –

+0

나는 본다. 그것은 독창적이지만 무서운 행동입니다! –

4

당신은 추가해야합니다 :

[[-s $ HOME/.rvm/스크립트/RVM] & & 소스의 $ HOME/.rvm/스크립트/RVM을

을 쉘 구성 (일반적으로 .bashrc 또는 .zshrc)으로 설정하십시오.

셸을 시작할 때 RVM이로드되어 cd 명령을 덮어 쓰고 이동하면서 .rvmrc을 확인합니다. 자세한 내용은 $HOME/.rvm/scripts/cd의 내용을 참조하십시오.

+0

나를 위해 RVM을 설치하면 .bash_profile – Bogatyr