2016-09-18 93 views
0

我對bundler的理解是,當您向Gemfile添加Gem時,當您運行bundle install時,bundler會自動安裝其所有依賴項。爲什麼bundler沒有安裝依賴關係?

我正在創建一個寶石。在我的gemspec中,我指定了以下要求:

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" 

Bundler完成所有安裝就好了。當我查看Gem.lock時,我注意到以下幾點:

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

注意沒有用於時間同步的MySQL依賴關係。當我啓動IRB,我需要我的寶石,我得到以下錯誤:

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

爲什麼不捆綁自動安裝mysql2寶石?

回答

0

em-synchrony不取決於mysql2。它僅僅是一個支持的客戶端,其中的一個例子:https://github.com/igrigorik/em-synchrony#em-synchrony

事實上,看着EM-同步的gemspec揭示了只有一個依賴eventmachinehttps://github.com/igrigorik/em-synchrony/blob/master/em-synchrony.gemspec

它,但是,由於在上市EM-同步的development dependency開發組在其Gemfile中。這些依賴關係不會爲您安裝。

您必須自己手動包含mysql2

相關問題