我对bundler的理解是,当您将一个Gem添加到Gemfile中时,bundler会在您运行bundle install时自动安装它的所有依赖项。
我正在创造一个宝石。在我的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)
...注意,em-synchrony没有MySQL依赖项。当我启动irb,并且我需要我的gem时,我得到以下错误:
> require 'my_gem'
RuntimeError: Missing EM-Synchrony dependency: gem install mysql2为什么bundler没有自动安装mysql2 gem?
发布于 2016-09-18 11:37:08
em-synchrony不依赖于mysql2。它只是一个受支持的客户端,是几个客户端之一:https://github.com/igrigorik/em-synchrony#em-synchrony
实际上,查看em-synchrony的gemspec只显示了一个依赖项eventmachine:https://github.com/igrigorik/em-synchrony/blob/master/em-synchrony.gemspec
然而,正如开发组在其Gemfile中列出的那样,它是一个em- development dependency。不会为您安装这些依赖项。
您必须自己手动包含mysql2。
https://stackoverflow.com/questions/39553347
复制相似问题