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
응용 프로그램을 실행 하는 데 사용
샌드 박스 를 좋아할 것 같습니다 .
Bundler를 사용 하여이 작업을 수행하는 방법에 대해 언급합니다 (RVM과 함께 루비와 기본 전역 보석 세트를 관리하는 RVM, 프로젝트 별 보석을 처리하는 Bundler)
bundler install --binstubs --path vendor
프로젝트의 루트에서이 명령을 실행하면 Gemfile에 나열된 gem을 설치하고, libs를 넣고, ./vendor
모든 실행 파일 ( ./bin
및 require
사용 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
'Programing' 카테고리의 다른 글
파이썬에서 객체의 복사본을 어떻게 만들 수 있습니까? (0) | 2020.06.06 |
---|---|
캐시 없음과 재확인의 차이점 (0) | 2020.06.06 |
정적 확장 방법 (0) | 2020.06.06 |
Node.js에서 비동기 함수의 긴 중첩을 피하는 방법 (0) | 2020.06.06 |
Entity Framework : 기본 키가없는 테이블 (0) | 2020.06.06 |