2010-05-20 3 views
1

jruby 레일 앱이 있고 보석 의존성 관리를 위해 bundler를 사용하기 시작했습니다. 저는 배포 전략에 대한 사람들의 의견을 듣고 싶습니다. 문서에서는 bundle package을 사용하여 보석을 로컬에서 패키지하므로 서버에서 가져올 필요가 없습니다. (기본적으로 warbler가 기본적으로이 작업을 수행한다고 생각합니다.) 개인적으로 (우리를 위해) 이것이 우리의 길로가는 길은 아니라고 생각합니다. 배포 된 코드 (이 경우에는 WAR 파일)가 훨씬 커집니다.Bundler와 JRuby로 레일스 배치 전략

내 기본 설정은 코드가 복사 된 후 서버에 직접 모든 종속성을 가져 오는 MVN 설치를 모방하는 것입니다. 여기에 내가 모든 코멘트 감사합니다, 생각하고있는 작업은 다음과 같습니다

1 단계 : 서버
복사, WAR 파일을 구축 2 단계 : MVN 와 자바 종속성을 가져, 서버와의 전쟁을 풀고 3 단계 : 보석 deps를 가져 Bundler 프로그램을 사용하여 (이들을 어디에 놓아야합니까?)
* 3 단계는 제가 약간 명확하지 않은 단계입니다. 나는 마음에있는 특정한 표적으로 bundle install를 달리는가 ??
4 단계 : 여기에 Tomcat을 다시 시작 다시

내 이유는 내가 종속성이 배포시 코드를 별도로 보관하고 싶은 것입니다. 또한 응용 프로그램의 홈 디렉토리에 설치하지 않고 포함 된 모든 보석 종속성을 응용 프로그램 자체에 배치하고 싶습니다 (Bundler의 기본 설정이라고 생각합니다).

답변

0

Warbler의 기본 구조를 사용하여 보석을 Rails.root/gems에 복사 했으므로 해당 규칙을 따르기로했습니다.

* 참고 :이 경로를 레일스의로드 경로로 정의하는 곳은 어디에도 보이지 않지만 분명히 작동합니다. 또한 bundle install gems 특정 명령의 예처럼 보이는 있습니다

Step1: Build war file, copy to server 
Step2: Unpack war on server, fetch java dependencies with mvn 
Step3: use Bundler to fetch Gem deps: `bundle install gems --without test --disable-shared-gems` 
Step4: Restart Tomcat 

: 여기 내 마지막 솔루션입니다. "이 보석을 설치하십시오"라고하지만 gems은 실제로 Rails.root의 디렉토리 보석을 가리 킵니다. 이 디렉토리는 bundler에 의해 생성되므로 배포 할 필요가 없습니다.

비슷한 솔루션을 찾는 다른 사용자에게 도움이 되길 바랍니다.