【问题标题】:Why didn't bundler install the dependency?为什么 bundler 不安装依赖项?
【发布时间】:2016-09-18 01:55:28
【问题描述】:

我对bundler的理解是,当你在Gemfile中添加一个Gem时,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?

【问题讨论】:

    标签: ruby rubygems bundler


    【解决方案1】:

    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

    然而,它是一个 development dependency 的 em-synchrony,在其 Gemfile 的开发组中列出。这些依赖项不会为您安装。

    您必须自己手动添加mysql2

    【讨论】:

      猜你喜欢
      • 2015-11-15
      • 1970-01-01
      • 2011-03-18
      • 2021-09-01
      • 1970-01-01
      • 2021-08-28
      • 2018-11-13
      • 2010-09-30
      • 2018-07-01
      相关资源
      最近更新 更多