Programing

virtualenv에 해당하는 루비?

crosscheck 2020. 6. 6. 08:17
반응형

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모든 실행 파일 ( ./binrequire사용 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

This will put all gems under the project's .direnv/ruby directory (makes opening gems easier). bundler will put wrapper binaries in .direnv/bin (no more bundle exec!).

+ rbenv

It's also possible to use rbenv by adding the use rbenv command in any .envrc file. This will activate rbenv which in turn will put the ruby wrappers in the PATH.

Note that it's not necessary to install rbenv in the .bashrc or .zshrc for this to work.

+ RVM

Here is the most complicated .envrc that I use on ruby projects:

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

rvm is used to select the right ruby version for you

layout commands automatically set some of the usual environment variables. For now only the ruby layout exists. What it does is set the GEM_HOME environment variable and it's bin directory to your path. Because it depends on the ruby version, make sure to call it after "rvm". Since each ruby layout directories have their own GEM_HOME, you don't need to use rvm's gemsets.

PATH_add prepends and expands the given relative path. In that case, I use this to segregate the bundler binstubs from my own bin scripts with bundle install --binstubs .direnv/bundler-bin

If you want to find out what those commands exactly do, for now: cat direnv stdlib | less


Mineshaft is a project that I've been working on for some time and am continuing development work on.

It offers the ability to both create virtual environments akin to how virtualenv works and can also install Ruby globally as well.

참고URL : https://stackoverflow.com/questions/486995/ruby-equivalent-of-virtualenv

반응형