2014-09-17 4 views
2

내 Gemfile에서 참조하려고하는 .gem 파일로 작성된 맞춤 보석이 있습니다. .gemspec과 함께 .gem 파일을 vendor/gems 폴더에 넣었습니다. 내 Gemfile은 다음 줄이 있습니다Bundler가 맞춤 보석을 찾을 수 없습니다

나는 번들 설치 실행할
gem 'umlgrader', '1.0.0', :path=>'vendor/gems' 

,이 보석을 발견했다고 주장을했지만 보석이 있었다하더라도, 그것을 "설치"보석 "을 사용하여"보다는 말합니다 이전에 내 컴퓨터에 설치되지 않았습니다. 내 응용 프로그램을 실행하려고하면 보석의 메서드 중 하나를 호출하려고하면 NoMethodError가 발생합니다. 번들러가 보석을 설치하지 않는 이유는 무엇입니까? 나는 다음과 같이 Gemfile을 편집 한 다음 해당 디렉토리에있는 보석을 풀고으로 작동하도록 입수했습니다

:

gem 'umlgrader', '1.0.0', :path=>'vendor/gems/umlgrader-1.0.0' 

이 솔루션은 바람직보다 적습니다. 내가 Heroku에 응용 프로그램을 배포하려고하기 때문에 Bundler를 사용하여 보석을 설치할 수 있기를 원합니다. 저는 이미 온라인에서 찾은 많은 솔루션을 시도했지만 제안 사항은 공개되어 있습니다.

편집 : 이미 겪었 및 시도 다른 페이지의 일부 : Bundler: installing a specific .gem file How to use Bundler with offline .gem file? How do I specify local .gem files in my Gemfile?

는 또한 많은 사람들이 보석을 포함하는 Git 저장소를 가리키는 제안났습니다. 내가하지 않으면 나는 이것을하지 않을 것이다.

+0

시도해 보았던 몇 가지 솔루션에 대한 링크를 추가 할 수 있습니까? 이런 식으로 우리는 같은 것을 추천하는 것을 피할 수 있습니다. – xDaevax

+0

나는 Gemfile에서 path : path를 사용하는 많은 솔루션을 읽었으며 모두 작동한다고 주장하지만 분명히 그렇지 않습니다. 또한 번들 패키지를 사용하고 모든 보석을 공급 업체/캐시 (로컬로 작동하지만 Heroku에 배포 할 때 사용하지 않음)에 넣으려고했습니다. – mattherman

답변

0

Bundler 설명서는 해당 주제에 대해 다소 모호하지만 Bundler의 의도 된 동작입니다. path 옵션을 사용하려면 보석을 원하는 위치에 포장해야합니다.

하지만 Heroku는 문제가되지 않습니다. 결국 보석이 이미 포장되어 있어도 Bundler를 사용하고있는 것입니다. 그것은 단지 보석 설치 과정에서 더 적은 단계입니다 ...

+0

그것은 효과가 있습니다, 그것은 단지 우리에게 덜 이해됩니다. 우리는 보석의 일부인 코드가 루트 레벨에 있고 웹 프로젝트가 그 내부에있는이 이상한 디렉토리 구조로이 프로젝트를 계승했습니다. 따라서 저장소 전체를 볼 때 웹 프로젝트 내에서 코드를 압축하여 코드를 복제합니다. – mattherman

+0

경로를 사용하지 않고 .gem 파일로 작업하게하는 방법이 있습니까? 번들러를 사용하지 않으면 보석을 전혀 찾을 수 없습니다. – mattherman

관련 문제