2011-02-01 3 views
1

동시에 개발중인 라이브러리에 의존하는 레일 응용 프로그램이 있습니다..gem 파일을 번들러 (소스가 아님)에 포함하는 방법

앱을 배포 할 때 다양한 이유로 보석상에로드하려면 bundler에서 git => ''옵션을 사용할 수있는 옵션이 없습니다. 이상적으로 내가하고 싶은 다음

Gemfile

gem 'system-api', :gem => 'vendor/system-api-1.0.0.gem' 

내가 보석을 사전에 구축하고 단순히 프로젝트에 포함하고 자식으로 그것을 확인 할 수 있습니다.

번들러를 사용하거나 번들러를 사용하지 않고이 작업을 수행 할 수있는 방법이 있습니까?

[UPDATE 1]

I "는 보석 '시스템 API를', '1.0.0': 경로 => '벤더 /'"시도 들러가 올바르게 설치라고하지만,이 일품 케이 '보석 목록'에 나타나지도 않고, 레일 프로젝트에 대한 참조가 없습니다. '번들 쇼'명령과 함께 표시됩니다.

답변

0

번들에는 :path 옵션이있는 것 같습니다. 프로젝트의 Gemfile 위치를 기준으로 실행됩니다.

gem 'system-api', :path => "vendor" 

더 많은 정보를 원하시면 bundler's Gemfile docs를 참조하십시오 경로뿐만 아니라 실제 보석 이름, 폴더를 지정합니다. 들러가 파일을 .gem 내장을 넣어 곳

+0

gem 'system-api', '0.0.3', : path => 'vendor /'그리고 bundler가 올바르게 설치했다고하지만 보석이 'gem list'에 표시되지 않는다고하지 않습니다. 레일 프로젝트에 대한 참조가 있습니다. –

0

당신이 "번들 패키지"를 실행하면 X.gem이 ./vendor/cache

에 파일을 넣을 경우가 작동 할 수는 그 다음이다. 그래서 당신이 직접 거기에 놓으면, 번들러가 거기에서 그것을 발견 할 것인가? 아마도. 그러나 Bundler가 지원하는 경우,/bundle/cache 및/또는 다른 것들을 패키지하지 말아야한다는 아이디어에 대해서는 확신하지 못합니다. Bundler가이를 지원한다면, "bundle package"는 모든 것을 거기에 넣으려고합니다.

http://gembundler.com/bundle_package.html http://gembundler.com/man/bundle-package.1.html 대신 환매 특약으로 사전 구축 된 X.gem을 확인, 당신은 X의 소스를 확인할 수있는 경우

gem을 repo에 저장하고 소스에 X.gemspec 파일이 포함되어 있으면 : path 옵션을 사용할 수 있습니다. 그러나 : path 옵션이 * .gem 패키지가 아니라 소스를 가리킬 것으로 예상한다는 것을 알았을 때 생각합니다. 간단히 * .gem의 압축을 풀면 bundler gem : path를 사용할 수있는 디렉토리가 생성 될 수 있습니다. (A * .gem 제품은 단지 zip 파일 일뿐입니다 ...).

확실한 대답은 아니지만 탐색 아이디어가있을 수 있습니다.

0

나는 정상이라고 말할 것입니다. gem list은 보석을 보여주지 않습니다. 번들러를 통해 설치했으며 gem list을 실행할 때 번들러를 호출하지 않습니다. 대신 bundler exec gem list으로 확인하십시오.bundle-exec man page

0

나는 한 다음 Bundler 프로그램을 사용할 때 그런데

, 당신은 항상 (자신의 최대 Bundler를 얻을 수있는 방법과 실행하고있는 rails server을 제외하고) 당신이 실행되는 명령 행하기 전에 bundler exec를 사용한다

gem 'libv8', '3.11.8.3mytest', :path => '../libv8/pkg' 

을 그리고 ../libv8/pkg 폴더 보석 libv8-3.11.8.3mytest-x86_64-linux.gem을 포장 만 바이너리를 포함, 어떤 작동합니다.

희망이 도움이됩니다.

관련 문제