특정 gem의 다른 버전을 어떻게 "활성화"합니까?


85

내 OS의 "활성"gem으로 레일 2.3.10 사이를 전환하여 명령 줄에서 호출 할 수 있습니다.

이것이 가능합니까? rvm을 사용하지 않습니다. 시작할 때가 된 것 같습니다.

나는 시도 gem install rails --version=2.3.10했지만 gem의 버전이 설치되어 있는지 확인하고 /usr/bin/rails.

(이미 내 앱에 번 들러를 사용하고 있지만 지금까지 OS 수준에서 gem에 대한 정확한 제어가 필요하지 않았습니다)

답변:


154

문제가 특정 버전의 바이너리를 실행하는 것이라면 :

rails --version # => the latest version
rails _2.3.10_ --version # => Rails 2.3.10

이 패턴 ( gem-binary _gem-version_)은 모든 gem 바이너리에서 작동합니다.

도움이 되었기를 바랍니다.


1
오, 이것은 사무실에서 긴 주말을 구했습니다. 감사합니다!
Lachlan McD.

2
그것은 그들 모두를 위해 작동하지 않습니다 rackup _1.4.3_ --version로 <br> Rack 1.1 (Release: 1.4)
클로이

1
rackup 은 릴리스 버전 만 인쇄합니다 ( Rack.versionRack.release github.com/rack/rack/blob/master/lib/rack.rb 참조 ). 시도 gem install rack --version=1.3 && rackup _1.3.0_ --version, 인쇄됩니다Rack 1.1 (Release: 1.3)
Daniel Vartanov

그리고 단지의 경우, 여기 그것이 작동하는 방법이다 :which rackup | xargs cat
다니엘 Vartanov

감사합니다 Daniel 매우 유용합니다
route

12

RVM 사용

RVM을 사용하면 다양한 버전의 Ruby 및 Gems를 관리 할 수 ​​있습니다. 예를 들어 다음을 사용하여 루비 버전을 설치할 수 있습니다.

rvm install 1.9.2

그런 다음 다음을 사용하여 사용할 수 있습니다.

rvm use 1.9.2

gemset으로 프로젝트별로 특정 gem을 사용하세요.

더 많은 네임 스페이스를 원하면 gemset을 설정할 수 있습니다. 특정 프로젝트에 대한 특정 gem을 포함 할 디렉토리.

rvm gemset create myproject

그런 다음 다음과 같이 사용할 수 있습니다.

rvm use 1.9.2@myproject

오토메이션

gem 전환 프로세스를 자동화하려면 프로젝트 루트에서 .ruby-version.ruby-gemset 파일을 팝 하세요. Ruby 버전과 내부에서 사용하려는 gemset의 이름을 표시하면 프로젝트 디렉토리로 cd 할 때 RVM이 올바른 gemset을 선택합니다.

gemset에 gem 설치하기

번 들러를 사용하는 경우 일반적인 방법으로 gemset에 gem을 설치합니다.

bundle install

또는 일반 이전 사용 :

gem install mygem

보석은 올바른 보석 세트로 이동합니다.

RVM 대안

유사한 작업을 수행하는 rbenv를 확인하고 싶을 수도 있습니다.


1
rvm의 문제는 (당신이 언급했듯이) 루비 버전과 gem 버전을 처리한다는 것입니다. rbenv는 루비 버전을 처리하고 번 들러가 gem 버전을 처리하도록합니다.
daslicious

7

RVM 을 사용할 수 있습니다.

그런 다음 나중에 Bundler 를 사용하여 gem 종속성을 잘 관리 할 수 있습니다 .

당신의 Gemfile

gem "rails", "2.3.10"

그리고 귀하의 응용 프로그램에서

require 'rubygems'
require 'bundler/setup'

그리고 당신은 끝났습니다.


또한 일부 스크립트가 Gemfile에 선언 된 버전 만 "보도록"하려면 "bundle exec <script-name>"으로 실행하십시오. 예 :bundle exec warble
rustyx

3

편집 : 게시물에서 RVM 언급을 봤습니다. 확실히 갈 길.

RVM 을 설치하고 싶을 것입니다. 동일한 시스템에서 다양한 Ruby와 다양한 gem을 관리 할 수있는 놀라운 패키지입니다. 완전히 쉽게 앞뒤로 전환 할 수 있습니다.

다음은 설치 가이드입니다. http://rvm.beginrescueend.com/rvm/install/

일단 모든 것이 일어나면 명령 줄에서와 함께 설치된 모든 루비를 볼 수 rvm list있으며 rvm use ruby-head, 예를 들어로 전환 할 수 있습니다. RVM은 각 루비의 보석을 개별적으로 유지하므로 질문에 도움이 될 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.