2016-09-18 1 views
0

Gemfile에 Gem을 추가하면 bundler는 bundle install을 실행할 때 모든 종속성을 자동으로 설치한다는 점을 이해합니다.종속성을 번들로 설치하지 않은 이유는 무엇입니까?

나는 보석을 만들었습니다. 내 보석에서 다음 요구 사항을 지정했습니다.

spec.add_development_dependency "bundler", "~> 1.7" 
spec.add_development_dependency "rake", "~> 10.0" 
spec.add_development_dependency "eventmachine", "~> 1.0.4" 
spec.add_development_dependency "em-synchrony" 
spec.add_development_dependency "rspec" 

번들러는 모든 설치를 훌륭하게 완료했습니다. Gem.lock을 보면 다음과 같은 것을 알 수 있습니다 :

... 
em-synchrony (1.0.5) 
    eventmachine (>= 1.0.0.beta.1) 
... 

em-synchrony에 대한 MySQL 종속성에 주목하십시오.

> require 'my_gem' 
RuntimeError: Missing EM-Synchrony dependency: gem install mysql2 

왜 자동으로 mysql2 보석을 설치 들러하지 않았다 : 나는 IRB 시작, 나는 내 보석을 필요로 할 때, 나는 다음과 같은 오류가 발생합니다?

답변

0

em-synchronymysql2에 의존하지 않습니다. 그것은 지원되는 클라이언트, 몇 가지 중 하나에 불과하다 : 그것은, 그러나, EM-동시성의 development dependency에 나열된대로 https://github.com/igrigorik/em-synchrony/blob/master/em-synchrony.gemspec

: 실제로 https://github.com/igrigorik/em-synchrony#em-synchrony

, EM-동시성의 gemspec 보면 하나의 종속 eventmachine를 보여 개발 그룹의 Gemfile에 있습니다. 이러한 종속성은 설치되지 않습니다.

직접 mysql2을 포함시켜야합니다.