为什么 bundler 没有安装依赖项?
Why didn't bundler install the dependency?
我对 bundler 的理解是,当你在 Gem 文件中添加一个 Gem 时,当你 运行 bundle install
时,bundler 会自动安装它的所有依赖项。
我正在创建一个 gem。在我的 gem 规范中,我指定了以下要求:
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 同步没有 MySQL 依赖性。当我启动 irb 并需要 gem 时,出现以下错误:
> require 'my_gem'
RuntimeError: Missing EM-Synchrony dependency: gem install mysql2
为什么捆绑器没有自动安装 mysql2 gem?
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 同步,正如其 Gemfile 中的开发组所列。不会为您安装这些依赖项。
您必须自己手动添加 mysql2
。
我对 bundler 的理解是,当你在 Gem 文件中添加一个 Gem 时,当你 运行 bundle install
时,bundler 会自动安装它的所有依赖项。
我正在创建一个 gem。在我的 gem 规范中,我指定了以下要求:
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 同步没有 MySQL 依赖性。当我启动 irb 并需要 gem 时,出现以下错误:
> require 'my_gem'
RuntimeError: Missing EM-Synchrony dependency: gem install mysql2
为什么捆绑器没有自动安装 mysql2 gem?
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 同步,正如其 Gemfile 中的开发组所列。不会为您安装这些依赖项。
您必须自己手动添加 mysql2
。