[python] virtualenv에 해당하는 루비?

Python 유틸리티 virtualenv 와 비슷한 것이 있습니까?

기본적으로 Python 패키지를 샌드 박스 환경에 설치할 수 있으므로 easy_install django시스템 전체 사이트 패키지 디렉토리에 들어 가지 않고 virtualenv가 만든 디렉토리에 있습니다.

예를 들면 다음과 같습니다.

$ virtualenv test
New python executable in test/bin/python
Installing setuptools...cd .........done.
$ cd test/
$ source bin/activate
(test)$ easy_install tvnamer
Searching for tvnamer
Best match: tvnamer 0.5.1
Processing tvnamer-0.5.1-py2.5.egg
Adding tvnamer 0.5.1 to easy-install.pth file
Installing tvnamer script to /Users/dbr/test/bin

Using /Library/Python/2.5/site-packages/tvnamer-0.5.1-py2.5.egg
Processing dependencies for tvnamer
Finished processing dependencies for tvnamer
(test)$ which tvnamer
/Users/dbr/test/bin/tvnamer

RubyGems에 이와 같은 것이 있습니까?



답변

RVM 은 다른 루비 버전과 보석 등을 샌드 박스 할 수 있기 때문에 virtualenv 작동 방식에 더 가깝습니다.


답변

샌드 박스, RVM 또는 rbenv는 앱의 gem 종속성 버전을 관리하지 않습니다. 이를위한 도구는 bundler 입니다.

  • 응용 프로그램의 종속성 선언 으로 Gemfile 을 사용하십시오.
  • bundle install이러한 종속성의 명시 적 버전을 격리 된 위치에 설치 하는 데 사용
  • bundle exec응용 프로그램을 실행 하는 데 사용

답변

아무도 rbenv를 언급하지 않은 것 같습니다 .


답변

샌드 박스 를 좋아할 것 같습니다 .


답변

Bundler를 사용 하여이 작업을 수행하는 방법에 대해 언급합니다 (RVM과 함께 루비와 기본 전역 보석 세트를 관리하는 RVM, 프로젝트 별 보석을 처리하는 Bundler)

bundler install --binstubs --path vendor

프로젝트의 루트에서이 명령을 실행하면 Gemfile에 나열된 gem을 설치하고 libs를 넣고 ./vendor모든 실행 파일을 ./bin모든 requires 에 넣습니다 (사용하는 경우)bundle console 하거나 번 들러가 필요한 경우)이이 exe와 lib를 참조합니다.

나를 위해 작동합니다.


답변

root가 아닌 것으로 gem을 설치해야하는 경우 GEM_HOME환경 변수를 설정하십시오 . 그런 다음 실행하십시오 gem.

예를 들면 다음과 같습니다.

$ export GEM_HOME=$HOME/local/gems
$ gem install rhc


답변

direnv를 추천 합니다 . 쉘의 환경 전환기입니다.

각 프롬프트 전에 현재 및 상위 디렉토리에 “.envrc”파일이 있는지 확인합니다. 파일이 존재하고 권한이 부여 된 경우, 파일은 bash 서브 쉘에로드되고 내 보낸 모든 변수는 direnv에 의해 캡처 된 다음 현재 쉘을 사용할 수있게됩니다.

다음은 루비 설치와 함께 direnv를 사용하는 방법입니다

+ 루비 설치

에 이것을 추가하십시오 ~/.direnvrc

use_ruby() {
  local ruby_root=$HOME/.rubies/$1
  load_prefix "$ruby_root"
  layout_ruby
}

ruby-install ( brew install ruby-install)을 설치하고 많은 루비를 설치하십시오.

ruby-install ruby 1.9.3
ruby-install ruby 2.0.0
ruby-install ruby 2.2.0

그리고 편의를 위해 두 개의 심볼릭 링크를 만드십시오.

ln -s .rubies/1.9 ruby-1.9.3-p*
ln -s .rubies/2.0 ruby-2.0.0
ln -s .rubies/2.2 ruby-2.2.0

그리고 마지막으로 모든 프로젝트에서 .envrc:

use ruby 2.0

이렇게하면 모든 gem이 프로젝트의 .direnv/ruby디렉토리에 놓입니다 (보석을 쉽게 열 수 있습니다). 번 들러는 래퍼 바이너리를 넣지 .direnv/bin않습니다 (더 이상 bundle exec!).

+ rbenv

rbenv를 사용하여 use rbenv명령을 추가 할 수도 있습니다..envrc파일에 . 그러면 rbenv가 활성화되어 루비 래퍼가 PATH에 배치됩니다.

이것이 작동하기 위해 rbenv를 .bashrc 또는 .zshrc에 설치할 필요는 없습니다.

+ RVM

루비 프로젝트에서 사용하는 가장 복잡한 .envrc는 다음과 같습니다.

rvm use 1.8.7
layout ruby
PATH_add .direnv/bundler-bin

rvm은 적합한 루비 버전을 선택하는 데 사용됩니다

레이아웃 명령은 일반적인 환경 변수 중 일부를 자동으로 설정합니다. 현재는 루비 레이아웃 만 존재합니다. 그것이하는 일은 GEM_HOME 환경 변수와 경로의 bin 디렉토리입니다. 루비 버전에 의존하기 때문에 “rvm”다음에 호출해야합니다. 각 루비 레이아웃 디렉토리에는 자체 GEM_HOME이 있으므로 rvm의 gemset을 사용할 필요가 없습니다.

PATH_add는 주어진 상대 경로를 앞에 추가하고 확장합니다. 이 경우 번들로 binstub을 내 bin 스크립트와 분리하는 데 사용합니다.bundle install --binstubs .direnv/bundler-bin

해당 명령이 정확히 수행하는 작업을 찾으려면 다음과 같이하십시오. cat direnv stdlib| 적게