프로젝트별로 올바른 gemset 또는 Ruby 버전을 사용하도록 Ruby를 구성하려면 어떻게 해야 하나요?

프로젝트별로 올바른 gemset 또는 Ruby 버전을 사용하도록 Ruby를 구성하려면 어떻게 해야 하나요?

터미널을 열고 내 프로젝트 폴더(예: cd /proj/tickecting_app)로 이동합니다. 그 후 다음 명령을 실행합니다 rvm use ruby 1.9.x@gemset.

터미널을 열 때마다 이 명령이 실행되기를 원합니다.

자동으로 실행할 수 있는 방법이 있나요? 좀 더 구체적으로 말하자면, 별도의 탭에서 다양한 프로젝트로 이동합니다.

예를 들어:

  • 먼저 탭 cd /proj/tickecting_app하고 실행하세요 rvm use ruby 1.9.x@gemset.
  • 두 번째 탭을 cd /proj/rss_feed_app실행하고 rvm use ruby 2.1.x@gemset.

프로젝트에 따라 다른 명령을 실행하고 싶습니다. 가능합니까?

답변1

.rvmrcRVM을 사용하는 경우 프로젝트 디렉터리에 다음 이름의 파일을 배치하면 됩니다.

rvm use ruby 1.9.x@gemset

두 번째 프로젝트의 경우에도 동일합니다. 호출을 변경하면 됩니다 rvm.

답변2

별칭이 유용할 수 있습니다. alias실행해야 하는 각 특정 디렉터리와 명령에 대해 하나씩 만들 수 있습니다 . 따라서 귀하가 제공한 두 가지 예의 경우 다음과 같습니다.

alias ticketapp='cd /proj/tickecting_app && rvm use ruby 1.9.x@gemset'

alias feedapp='cd /proj/rss_feed_app && rvm use ruby 2.1.x@gemset'

그래서 다음번에는 그냥 주어야 합니다 alias(그리고 줄 필요는 없습니다 cd). 즉 ticketapp, feedapp위의 경우입니다.

별칭을 영구적으로 만들려면 다음을 수행하세요.

vim ~/.bashrc

.bashrc이러한 별칭 명령을 파일 에 있는 그대로 제공합니다.

답변3

[mikeserv@localhost ~]$ PS1=$PS1'$(
    [ ${last_hist=\!} -ne \! ] && {
    h=$(history 1)
    [ -n "${h#"${h##* cd *}"}" ] &&    
    . ./.dircmd >&2 2>/dev/null        
})${0##*["$0"$((last_hist=\!))]*}'
[mikeserv@localhost ~]$ cd .
[mikeserv@localhost ~]$ 
[mikeserv@localhost ~]$ echo

[mikeserv@localhost ~]$ cat <<\DIRCMD >.dircmd
echo this is my home directory
> DIRCMD
[mikeserv@localhost ~]$ 
[mikeserv@localhost ~]$ echo

[mikeserv@localhost ~]$ cd .
this is my home directory
[mikeserv@localhost ~]$

비슷한 것이 POSIX 시스템에서도 작동할 것입니다. 하지만 제 생각에는 bash!bang 앞에 백슬래시만 있으면 된다고 생각합니다. bash또한 작동하지 않는 방식 fc(이식 가능)으로 기록을 업데이트하는 것 같지만 작동합니다 history. 다른 셸에서는 해당 history 1비트가 상호 교환 가능해야 fc -l -1하지만 bash그 뒤에 있는 명령인 것 같습니다. 정말 실망스럽습니다.

어쨌든 프롬프트가 그려질 때마다 $last_hist마지막 명령의 기록 번호로 변수가 정의됩니다. 매개변수 대체의 일치 필드에서 이 작업을 수행합니다. 이는 항상 어떤 것과도 동일하지 않으므로 프롬프트에 표시되지 않습니다.

확인은 fc마지막 기록 번호가 실제로 증가했는지 확인하는 것입니다. 예를 들어 Enter 키를 누르지 않았습니까? 또한 마지막 명령이 true인지 확인합니다 . 둘 다 true이면 현재 디렉터리에 있는 파일을 가져오려고 cd시도합니다 . 있는 경우 실행합니다. 그렇지 않다면, 아 그렇군요...dircmd

관련 정보