【问题标题】:Ruby gem - Requires depending on Runtime OptionsRuby gem - 取决于运行时选项
【发布时间】:2013-11-27 17:36:41
【问题描述】:
我正在开发一个红宝石,我的需求是一团糟。
gem 是一个 web Scraper,它根据给定的选项,使用不同的方法访问 web,因此需要不同的 gem。有些用户可能永远不需要一些 gem,或者其中任何一个。
我的问题是,我在 .gemspec 中放了什么:
s.add_runtime_dependency #do I require all the gems here?
在我的代码中,我实际上在哪里需要必要的 gem,我该如何进行测试?
我不知道这方面的约定。谢谢。
*代码:https://github.com/ZirconCode/Scrapah
【问题讨论】:
标签:
ruby
rubygems
require
【解决方案1】:
RubyGems 提供了两种主要的依赖“类型”:runtime 和 development。
运行时依赖项是您的 gem 工作所需要的(例如 rails 需要 activesupport)。
当有人想要对您的 gem 进行修改时,开发依赖项很有用。当您指定开发依赖项时,另一个开发人员可以运行gem install --dev your_gem,而RubyGems 将获取两组依赖项(runtime and development)。典型的开发依赖项包括测试框架和构建系统。
因此,在 Gem 规范文件中,您可以添加 Gem 需要工作的那些 Gem
Gem::Specification.new do |s|
s.name = "gem name"
s.version = "2.0.0"
s.add_runtime_dependency "daemons",
["= 1.1.0"]
s.add_development_dependency "bourne",
[">= 0"]