2012-06-13 8 views
0

Bundler를 사용하기 위해 여러 가지 응용 프로그램을 변환 중이므로 Gemfile.lock을 버전 관리로 확인하는 것이 가장 좋습니다. 하지만 중앙 개발/테스트 서버 및 프로덕션에 대한 배포는 Linux이지만 i (및 팀의 다른 개발자)는 Windows에서 작동합니다.Windows에서 Gemfile을 생성 할 때의 문제, Linux에 배포 할 때

필자가 발견 한 바로는 어떤 보석 사용으로도 Windows에 번들을 제공 할 수 없으며 Gemfile.lock이 Linux 환경에 성공적으로 배포 될 것으로 예상됩니다.

우리가 지금 시도하고있는 설정은 Gemfile을 버저 닝 (versioning)에 맡기고 배치 (bundler/capistrano)로 '번들 설치'를 실행하는 것입니다. 고통 스럽지만 (설치시 사용 권한 문제 인 bundler trying to install gems that are already installed locally), 우리는 잘못된 길로 빠지지 않을 것입니다.

+0

문제는 버전하지 Gemfile.lock 더 좋은 결정인지에 대한 자세한인가? – ilasno

답변

1

Bundler는 플랫폼을 기반으로 그룹을 만들 수 있습니다. 그걸 사용해 보셨나요? 우리는이 접근 방식을 사용하여 Windows와 Linux에서 Rails 애플리케이션을 유지할 수있었습니다.

예 :

platforms :ruby do 
    linux compatible gems 
end 

platforms :mswin do 
    windows compatible gems 
end 
+0

이 방법을 사용하면 Gemfile.lock을 버전 관리 할 수 ​​있습니다. 맞습니까? 하지만 Gemfile이 어떻게 구축되는지 (어떤 보석이 각각의 '플랫폼'블록에 들어가는 지 추적), 그리고 '번들 설치'가 어느 플랫폼에서든지 실행될 수 있으며 둘 다 포함 할 Gemfile.lock을 만들 수 있을지 궁금합니다. – ilasno

+0

예, 그러면 Gemfile.lock을 버전화할 수 있습니다. 나는 세부 사항을 알지 못하지만 Gemfile.lock을 하나 생성하고 현재 사용중인 플랫폼에 따라 보석이 설치되어 있는지 확인하십시오. – zsquare

+0

이 경로를 시도했지만 분명히 뭔가 빠져있는 것처럼 느껴집니다. 예를 들어, 'nokogiri'젬의 경우, Windows 용으로 사용되는 다른 버전이 있습니다 ('nokogiri (1.4.3.1-x86-mingw32)'는 Gemfile.lock에 표시되지만, 'platforms'기술 사용). 'nokogiri'가 두 플랫폼 그룹에 모두 표시되고, Windows 버전은 'vendor/cache'에 저장되며 '일부 보석은 공급 업체/캐시 디렉토리에서 누락 된 것 같습니다. .. 배포시 실패 출력에서 ​​nokogiri-1.4.3.1을 찾을 수 없습니다. 두 플랫폼 모두 '번들 패키지'가 필요합니까? – ilasno

관련 문제