2014-09-14 2 views
0

내 라이브러리는 라이브러리를 동적으로로드하는 Gem을 사용합니다. 예를 들어, sqlite 어댑터를 선택하면 'sqlite3'이로드됩니다. 내 라이브러리Bundler.setup이로드 경로와 함께 덤프합니다.

require 'bundler' 
Bundler.setup 

는 젬과 함께 설치된 보석을보고 중지 만 Bundler 프로그램을 사용하여이 특정 lib 디렉토리가 설치되어있는 것들을보고에서 작성하는 경우

문제이다.

`require': LoadError: cannot load such file -- sqlite3 

내 자신의 Gemfile에 sqlite3를 추가하지 않고이 문제를 해결하는 방법이 있나요 : 따라서

require 'sqlite3' 

는 예외의 원인은?

이 문제는 sqlite3과 아무 관련이 없습니다. Bundler 동작과 관련이 있습니다. sqlite3은 그것이 제가이 문제를 발견하는 데 도움이 된 보석 이었기 때문에 단순히 선택되었습니다.

+2

Bundler Gemfile manual를 참조하십시오 –

답변

2

Bundler.setup을 사용하면 명시 적으로로드 경로가 변경되므로 Gemfile에 지정된 보석 만 사용하게됩니다. Gemfile에서 지정하지 않은 것을 사용하지 않고 예기치 않은 종속성 충돌을 방지하기 위해 원하는 동작입니다. 동적으로 보석을로드 할 때

당신이 거짓 옵션이 필요합니다 사용해야합니다

gem "sqlite3", :require => false

이 sqlite3를 설치하는 들러 원인이 있지만 필요한 경우에만 필요합니다. 사용 보석의 설정이 완료 Gemfile/Gemfile.lock에 의해 지정된 것을 -

은 들러의 포인트입니다

관련 문제