2011-10-02 5 views
20

저는 capistrano, bundler 및 rvm이 포함 된 VPS에 레일 앱을 배포하고 있습니다. 여기 내 deploy.rb의 일부입니다RVM Gemset - Bundler & Capistrano in Production

$:.unshift(File.expand_path('./lib', ENV['rvm_path'])) 
require "rvm/capistrano"  
require "bundler/capistrano"    # Load RVM's capistrano plugin. 

set :rvm_type, :system 
set :rvm_ruby_string, '[email protected]_name' 

나는 내가 RVM의 gemset이 생성 된 것으로 나타났습니다 서버에 로그인 할 때, 그러나 모든 보석이에 설치된

rvm --create use [email protected]_name 

내 .rvmrc/공유 /bundle/ruby/1.9.1/gems - gemset에 없음 (/ usr/local/rvm/gemset)

저는 개발시 RVM을 사용합니다. 모범 사례는 무엇입니까? gemset에 보석을 설치하도록 bundler에게 지시하는 방법이 있습니까?

gemset이 필요합니까? (묶음꾼이 이미 보석 세트를 격리하고있는 것처럼 보입니다.) 나는 무엇인가 놓치고 있습니까?

이해해주세요!

고맙습니다.

답변

17

저는 RVM을 개발 및 생산에도 사용합니다. 그러나 개발 중 보석 세트를 사용하여 레일 프로젝트간에 보석을 분리하는 동안 RVM을 사용하여 제작 VPS에 루비를 설치하고 Bundler가 내 보석 버전을 처리하도록했습니다.

require "bundler/capistrano"을 통한 번들러 통합을 사용하면 번들러가 자동으로 설정됩니다. Bundlers Github page에서이 코드 뒤에 숨겨진 코드를 볼 수 있습니다. 당신이 볼 수 있듯이

bundle install --gemfile Gemfile --path shared/bundle --deployment --quiet --without development test 

가의 --deployment--path 플래그가 주어진다는 shared/bundle 디렉토리에 응용 프로그램과 함께 당신의 보석을 번들로 Bundler를 알려줍니다, 만 사용 : 기본 설정은 해당 번들이 명령을 실행하므로 있습니다 Gemfile.lock에 지정된 버전 (즉, 개발중인 버전). 번들 디렉토리는 배포간에 공유되므로 각 응용 프로그램에 대해 RVM 젬 세트를 사용하는 것과 비교하면 훨씬 쉽습니다.

이 설정에 대한 추가 정보는 this tutorial에서 확인할 수 있습니다. 아직도 보석을 별도의 보석 세트에 넣고 싶다면 this tutorial from Darcy Laycock을 더 읽을 것을 권합니다.

+1

정보 주셔서 감사합니다! 나는 bundler가 나의 프로젝트의 각각을 위해 보석을 다룰 수있게하고있다. 그리고 그것은 지금까지 훌륭하게 일하고있다. – Jazmin

+0

개발중인 RVM에서 +1, 프로덕션 환경에서 번들. 이 방법을 사용하여 한 호스트에서 여러 개의 루비 응용 프로그램을 실행할 수 있습니다. 아직 문제가 없습니다. – Soup

관련 문제